目錄
範例
說明
方法:使用Hashmap
輸出
結論
首頁 後端開發 C++ 將給定的字串轉換為T,透過任意次數替換字串之間的字符

將給定的字串轉換為T,透過任意次數替換字串之間的字符

Sep 10, 2023 pm 04:25 PM
字串 替換 轉換

將給定的字串轉換為T,透過任意次數替換字串之間的字符

轉換字串意味著我們必須根據給定條件將其與給定字串相同。在這個問題中,我們給了一個由字串「arr」和大小為「M」的字串「T」組成的陣列。我們的任務是檢查是否可以透過從數組的字串( arr[i] )中刪除任何字元並將該字元插入到另一個字串的任何索引中來使數組中存在的所有字串與給定的字串T 相同陣列的字串( arr[j] )。我們可以這樣做任意多次。如果可以使數組中的所有字串與字串‘T’相同,則傳回“YES”,否則傳回“NO”。

範例

Input 1: arr = [ “wxyz”, “wxxy”, “wyzz” ], T = “wxyz”
登入後複製
Output 1: YES
登入後複製

說明

使陣列中的所有字串與字串 T 相同的可能方法之一如下 -

  • 刪除索引 2 處字串 arr[1] (“wxxy”) 的字符,並將其插入到索引 1 處字串 arr[2] (“wyzz”) 處。然後它看起來像: [ “ wxyz”、“wxy”、“wxyzz”]

  • 刪除索引 3 處字串 arr[2] (“wxyzz”) 的字元並將其插入到索引 3 處字串 arr[1] (“wxy”) 處。然後它看起來像: [ “ wxyz”、“wxyz”、“wxyz”]。

執行上述步驟後,我們可以讓陣列中的所有字串都與字串T相同。因此答案是「YES」。

Input 2: arr = [ “rts”, “rtw”, “rts” ], T = “rts”
登入後複製
Output 2: NO
登入後複製

說明

陣列中存在 3 個字串,其中 2 個與字串 T 相同,但索引號為 1 的字串不相同。它包含不屬於字串T的不同字元。不可能使數組中的所有字串都成為字串T。因此,答案為「NO」。

方法:使用Hashmap

我們已經看到了上面給定字串的範例,讓我們轉向該方法 -

我們有兩個觀察結果如下 -

  • 因為我們必須讓陣列中的所有字串都與字串T相同,這樣陣列中每個字串的所有字元都必須出現在字串T中。換句話說,不存在不同的字元。否則,我們無法滿足條件。

  • 當我們計算完陣列中所有字串的字元出現頻率後,每個字元的出現頻率必須等於陣列「N」的大小。

    < /里>

根據上述觀察,我們有兩個條件需要檢查。

  • 陣列「freqArr」大小的字串的雜湊映射等於字串「T」的雜湊映射「freqT」。作為

freqArr.size() == freqT.size()
登入後複製
  • 字串 T 的每個字元都應該出現在陣列的每個字串中。字串 T 的每個字元在數組字串中的頻率計數應為“N”。作為-

freqArr.find(T[i]) == freqArr.end() and 
freqArr[T[i]] != freqT[T[i]]*N.
登入後複製

我們可以使用雜湊來解決這個問題,因為我們需要計算數組 string 和字串 T 中字元的頻率。

範例

讓我們看看上述方法的程式碼以便更好地理解 -

// Program to convert all strings to T
#include <bits/stdc++.h>
using namespace std;
string covertStringIntoT( int N, string arr[], string T){
   map< char,int > freqT; //to store the frequency of each character of string T
   int len = T.size(); //getting the size of the string T 
   
   //traverse the string T to store the frequency of the characters
   for( int i=0; i<len; i++){
      freqT[T[i]]++;
   }
   map< char,int > freqArr; //to store the frequency of each chracter of strings 
   
   // of Array.
   //traverse the strings of Array to store the frequency of the characters
   for( int i=0; i<N; i++){
      for(int j=0;j<arr[i].size(); j++){
         freqArr[arr[i][j]]++;
      }
   }
   
   // Check the condition one
   if(freqT.size() != freqArr.size()){
      return "NO";
   }    
   
   //check condition two while trversing the string T
   for( int i=0; i<len; i++){
      if(freqArr.find(T[i]) == freqArr.end() || freqArr[T[i]] != freqT[T[i]]*N ){
         return "NO";
      }
   }
   return "YES";
}
int main() {    
   string T = "wxyz"; // given string
   string arr[] = {"wxyz", "wxyy", "wxzz"}; // given array of strings
   int N = sizeof(arr) / sizeof(arr[0]); //getting the size of the array of string 
   
   // calling the function 'convertStringIntoT' to convert all strings of the 
   
   // array into string T
   string result = covertStringIntoT( N, arr, T);
   if(result == "YES"){
      cout<< result << ", it is possible to make all the strings of the array as string T";
   }
   else{
      cout<< result << ", it is not possible to make all the strings of the array as string T"; 
   }
   return 0;
}
登入後複製

輸出

YES, it is possible to make all the strings of the array as string T
登入後複製

時間與空間複雜度

#上述程式碼的時間複雜度為O(M N*L)

上述程式碼的空間複雜度為O(M)

其中 M 是字串 T 的大小,N 是陣列的大小,L 是陣列中存在的最長字串。

結論

在本教程中,我們實作了一個程序,透過任意多次替換字串之間的字符,將給定的字串轉換為 T。我們實作了一種雜湊方法,因為我們必須儲存頻率。在這種方法中,我們主要檢查兩個條件,如果所有條件都滿足,則意味著我們能夠將數組中的所有字串轉換為與字串 T 相同的字串。

以上是將給定的字串轉換為T,透過任意次數替換字串之間的字符的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

全角英文字母轉換為半角形式的實用技巧 全角英文字母轉換為半角形式的實用技巧 Mar 26, 2024 am 09:54 AM

全角英文字母轉換為半角形式的實用技巧在現代生活中,我們經常會接觸到英文字母,在使用電腦、手機等設備時也經常需要輸入英文字母。然而,有時候我們會遇到全角英文字母的情況,而我們需要使用的是半角形式。那麼,如何將全角英文字母轉換為半角形式呢?以下就為大家介紹一些實用的技巧。首先,全角英文字母和數字是指在輸入法中佔據一個全角位置的字符,而半角英文字母和數字則是佔據一

PHP 月份轉換為英文月份的實作方法詳解 PHP 月份轉換為英文月份的實作方法詳解 Mar 21, 2024 pm 06:45 PM

這篇文章將詳細介紹如何將PHP中的月份轉換為英文月份的方法,同時給出具體的程式碼範例。在PHP開發中,有時候我們需要將數字表示的月份轉換為英文的月份,這在一些日期處理或資料展示的場景下非常實用。以下將從實作原理、具體程式碼範例和注意事項等方面進行詳解。一、實作原理在PHP中,可以透過使用DateTime類別和format方法來實現將數位月份轉換為英文月份。 Date

怎麼重複字串_python重複字串教程 怎麼重複字串_python重複字串教程 Apr 02, 2024 pm 03:58 PM

1.先開啟pycharm,進入到pycharm首頁。 2.然後新建python腳本,右鍵--點選new--點選pythonfile。 3.輸入一段字串,代碼:s="-"。 4.接著需要把字串裡面的符號重複20次,代碼:s1=s*20。5、輸入列印輸出代碼,代碼:print(s1)。 6.最後運行腳本,在最底部會看到我們的回傳值:-就重複了20次。

PHP中int型別轉字串的方法詳解 PHP中int型別轉字串的方法詳解 Mar 26, 2024 am 11:45 AM

PHP中int型別轉字串的方法詳解在PHP開發中,常會遇到將int型別轉換為字串型別的需求。這種轉換可以透過多種方式實現,本文將詳細介紹幾種常用的方法,並附帶具體的程式碼範例來幫助讀者更好地理解。一、使用PHP內建函數strval()PHP提供了一個內建函數strval(),可以將不同類型的變數轉換為字串類型。當我們需要將int型別轉換為字串型別時,

qq音樂怎麼轉換mp3格式 手機上qq音樂轉mp3格式 qq音樂怎麼轉換mp3格式 手機上qq音樂轉mp3格式 Mar 21, 2024 pm 01:21 PM

qq音樂讓大家盡情享受觀影解悶,每天都可以使用這個軟體,輕鬆滿足自己的使用,優質海量的歌曲,任由大家暢聽,也可以下載保存起來,下次聽的時候,不需要網絡,而在這裡下載的歌曲不是MP3格式的,無法在其他平台使用,會員歌曲過期後也沒有辦法再聽了,所以很多小伙伴們,都想要將歌曲轉換成MP3格式的,在這裡小編為你們提供方法,幫助大家都可以使用起來!  1、開啟電腦qq音樂,點選右上角【主選單】按鈕,點選【音訊轉碼】,選擇【新增歌曲】選項,新增需要轉換的歌曲;  2、新增歌曲完畢,點選選擇轉換為【mp3

全角英文字母變成半角字母的方法 全角英文字母變成半角字母的方法 Mar 25, 2024 pm 02:45 PM

全角英文字母變成半角字母的方法在日常生活和工作中,有時候我們會遇到需要將全角英文字母轉換為半角字母的情況,例如在輸入電腦密碼、編輯文件或設計排版時。全角英文字母和數字是指寬度與中文字符相同的字符,而半角英文字母則是指寬度較窄的字符。在實際操作中,我們需要掌握一些簡單的方法,將全角英文字母轉換為半角字母,以便更方便地處理文字和數字。一、全角英文字母與半角英

PHP教學:如何將int型別轉換為字串 PHP教學:如何將int型別轉換為字串 Mar 27, 2024 pm 06:03 PM

PHP教學:如何將int型別轉換為字串在PHP中,將整型資料轉換為字串是常見的操作。本教學將介紹如何使用PHP內建的函數將int型別轉換為字串,同時提供具體的程式碼範例。使用強制型別轉換:在PHP中,可以使用強制型別轉換的方式將整型資料轉換為字串。這種方法非常簡單,只需要在整型資料前加上(string)即可將其轉換為字串。下面是一個簡單的範例程式碼

快速了解 PHP 中的 ASCII 數值轉換 快速了解 PHP 中的 ASCII 數值轉換 Mar 28, 2024 pm 06:42 PM

PHP中的ASCII數值轉換是程式設計中常會遇到的問題。 ASCII(AmericanStandardCodeforInformationInterchange)是一種用於將字元轉換為數字的標準編碼系統。在PHP中,我們經常需要透過ASCII碼來實現字元和數字之間的轉換。本文將介紹如何在PHP中進行ASCII數值轉換,並給予具體的程式碼範例。一、將字符

See all articles