目錄
範例範例
說明
方法一
演算法
範例
輸出
方法二
首頁 後端開發 C++ 透過將給定字元的所有出現替換為指定的替換字元來修改字串

透過將給定字元的所有出現替換為指定的替換字元來修改字串

Sep 08, 2023 am 10:17 AM
字元替換 替換字元 字串修改

透過將給定字元的所有出現替換為指定的替換字元來修改字串

在這個問題中,我們需要根據字元對陣列中給定的字元替換給定字串的字元。我們將討論兩種不同的解決方法。在第一種方法中,我們透過遍歷給定字串的字元和字元對來替換每個字元。

在第二種方法中,我們將使用一個長度為26的數組來儲存與每個字符相關的替換字符,並改變給定字串的字符。

問題陳述 − 我們給定了一個包含N個小寫字母字元的字串str。同時,我們給定了包含字元對的陣列。我們需要用pairs[i][1]取代給定字串中的pairs[i][0]字元。

範例範例

Input –  str = "xyz", pairs = {{'x', 'a'}, {'y', 'b'},, {'z', 'c'}}
登入後複製
Output – ‘abc’
登入後複製

說明

在這裡,‘x’被替換為‘a’,‘y’被替換為‘b’,‘z’被替換為‘c’。

Input – str = "abderb", pairs = {{'a', 'e'}, {'b', 't'}, {'e', 'f'}, {'r', 's'}}
登入後複製
Output – ‘etdfst’
登入後複製

說明

在字串中,'a'被替換為'e','b'被替換為't','e'被替換為'f','r'被替換為's'。

方法一

在這種方法中,我們將迭代每對字符,並在給定的字串中替換匹配的字符。我們需要兩個巢狀循環來迭代每個循環的字串。

演算法

  • 步驟 1 - 將字串的大小儲存在變數 'N' 中,並將陣列儲存在變數 'M' 中。

  • 步驟 2 - 將字串的副本儲存在 'temp' 變數中。

  • 步驟 3 - 使用 for 迴圈遍歷配對清單。

  • 步驟 4 − 在迴圈中,將第一個字元儲存在變數‘a’中,將第二個字元儲存在變數‘b’中。

  • 第5步 - 使用巢狀循環迭代字串。

  • 步驟 6 − 在巢狀循環中,如果給定字串的目前字元等於 'a',則將目前字元替換為 'b' 在暫存字串中。

  • 第7步 - 傳回temp的值。

範例

#include <bits/stdc++.h>
using namespace std;
string replaceChars(string str, vector<vector<char>> pairs){
   // stror the size of the string and the array
   int N = str.size(), M = pairs.size();
   
   // Create a copy of the string str
   string temp = str;
   
   // Iterate over the array
   for (int x = 0; x < M; x++){
   
      // store the characters from the pair
      char a = pairs[x][0], b = pairs[x][1];
      
      // iterate over the string
      for (int y = 0; y < N; y++){
      
         // If the character is equal to a, then replace it with b
         if (str[y] == a){
            temp[y] = b;
         }
      }
   }
   return temp;
}
int main(){
   string str = "abderb";
   vector<vector<char>> pairs{{'a', 'e'},
      {'b', 't'},
      {'e', 'f'},
      {'r', 's'}};
   cout << "The string after replacing with the given characters is - " << replaceChars(str, pairs);
   return 0;
}
登入後複製

輸出

The string after replacing with the given characters is - etdfst	
登入後複製

時間複雜度 - O(N*M),其中N是字串的長度,M是字元對陣列的長度。

空間複雜度 - O(N),因為我們將新字串儲存在temp變數中。

方法二

在這種方法中,我們可以建立一個大小為26的陣列。然後,我們可以將可替換的字元儲存在目前字元的位置上。最後,我們可以從陣列中取出可替換的元素,並更新字串的每個字元。

演算法

  • 步驟 1 - 取得字串大小為 'N' 和陣列大小為 'M'。

  • 第二步 - 定義長度為26的「初始」和「最終」陣列。

  • 第三步 - 遍歷字串並將str[Y]儲存在「str[Y] - a」的初始和最終數組索引中。這裡,str[Y] - 'a'根據字元的ASCII值給出0到25之間的索引。

  • 將str[Y]儲存在初始和最終數組的'str[Y] - a'位置的原因是,如果字串中存在任何字元但在字元對中不存在,我們可以在最終字串中保持它不變。

  • 第四步 - 迭代給定的字元對數組。在循環中,使用巢狀循環來迭代初始數組。如果目前字符對的第一個字符等於“initial”數組的字符,則使用當前字符對的第二個字符對更新“final”數組的字符。

  • 步驟 5 − 定義‘result’變量,並初始化為空字串。

  • 步驟 6 - 遍歷輸入字串,從「final」陣列中取得目前字元的相應字符,並將其追加到「result」字串中。

  • 步驟 7 - 傳回 'result' 字串。

範例

#include <bits/stdc++.h>
using namespace std;
//  Function to replace the characters in the string
string replaceChars(string str, vector<vector<char>> pairs){

   // getting the size of the string and the vector
   int N = str.size(), M = pairs.size();
   
   // Declare two arrays of size 26
   char initial[26];
   char final[26];
   
   // Check all existing characters in the string
   for (int Y = 0; Y < N; Y++){
      initial[str[Y] - 'a'] = str[Y]; final[str[Y] - 'a'] = str[Y];
   }
   
   // Iterate over the range [0, M]
   for (int X = 0; X < M; X++){
   
      // get characters from the vector
      char a = pairs[X][0], b = pairs[X][1];
      
      // Iterate over the range [0, 26]
      for (int Y = 0; Y < 26; Y++){
      
         // If the character is the same as a, then replace it with b in the final array
         if (initial[Y] == a){
            final[Y] = b;
         }
      }
   }
   string result = "";
   
   // get the final string using the final array
   for (int Y = 0; Y < N; Y++){
      result += final[str[Y] - 'a'];
   }
   return result;
}
int main(){
   string str = "aberb";
   vector<vector<char>> pairs{{'a', 'e'},
      {'b', 't'},
      {'e', 'f'},
      {'r', 's'}};
   cout << "The string after replacing with the given characters is - " << replaceChars(str, pairs);
   return 0;
}
登入後複製

輸出

The string after replacing with the given characters is - etfst
登入後複製

時間複雜度 - O(N),作為嵌套循環,僅進行常數迭代。

空間複雜度 - O(1),因為它使用一個長度為26的數組,是常數。

以上是透過將給定字元的所有出現替換為指定的替換字元來修改字串的詳細內容。更多資訊請關注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)

如何使用正規表示式在 PHP 中將字串中的特定字元替換為其他字符 如何使用正規表示式在 PHP 中將字串中的特定字元替換為其他字符 Jun 23, 2023 am 09:46 AM

在PHP中,正規表示式是一種非常強大的工具,它可以幫助我們輕鬆地處理和轉換字串。使用正規表示式,可以實現對字串的高效、靈活的操作,例如查找特定模式的字串,替換匹配的字串等。在本文中,我們將討論如何使用正規表示式來替換字串中的特定字元為其他字元。這是一個常見的需求,例如將一段文字中的HTML標籤替換為純文本,或將一段文字中的Emoji表

Python程式:從字串的右側修剪字串 Python程式:從字串的右側修剪字串 Sep 08, 2023 pm 06:21 PM

在Python中,我們有一個預先定義的函數rstrip()來刪除右側的字元。這意味著它將刪除字串右側的空格。讓我們舉一個例子來理解如何從字串的左側修剪。在給定的字串“WIRELESS”中移除右側字串LESS並將結果值得到為“WIRE”。在給定的字串“kingdom”中,刪除右側的字串dom,得到結果值為“king”。語法以下範例中使用的語法為−isspace()這是Python中預先定義的方法,用於允許字元中的空白、換行符或空格。 rstrip("parameterasastri

C++程式:取代特定索引處的字符 C++程式:取代特定索引處的字符 Aug 25, 2023 pm 10:53 PM

字串是一組字元。我們也可以將它們稱為字元數組。考慮到一個由字串組成的字元數組,這些字串具有指定的索引和值。有時候我們可以對字串進行一些修改,其中一種修改是替換字元透過提供一個特定的索引。在本文中,我們將看到如何替換一個字元從一個specificindexinsideastringusingC++.語法String_variable[&lt;givenindex&gt;]=&lt;newcharacter&gt;在C++中,我們可以使用索引存取字串字元。在

在Java中編寫一個程序,將文件中的所有字元替換為'#”,除了特定的單字 在Java中編寫一個程序,將文件中的所有字元替換為'#”,除了特定的單字 Sep 13, 2023 am 08:57 AM

String類別的split()方法。將目前字串拆分為給定正規表示式的匹配項。此方法傳回的陣列包含此字串的每個子字串,該子字串由與給定表達式匹配的另一個子字串終止或以字串末尾終止。 replaceAll()String類別的方法接受兩個表示正規表示式的字串和一個替換字串,並用給定的字串替換匹配的值。用“#”替換檔案中除特定單字之外的所有字元(一種方式)-將檔案的內容讀取到字串中。建立一個空的StringBuffer物件。使用split()方法將取得的字串拆分為String陣列。遍

Python程式會取代特定索引處的字符 Python程式會取代特定索引處的字符 Aug 19, 2023 am 09:41 AM

在Python中,我們可以透過將字串轉換為字元列表來輕鬆地替換特定索引處的字符,使用list()方法。然後,我們修改所需索引處的字符,並使用join()方法將列表轉換回字串。我們也可以使用切片和替換方法來取代特定索引處的字元。在本文中,我們將看到使用列表和join方法,切片方法和替換方法在Python中替換特定索引處的字元的範例。方法1:使用list()和join()方法語法list()方法list(sequence)list()方法接受一個序列(例如字串、元組或集合)作為參數,並傳回一個具

透過將給定字元的所有出現替換為指定的替換字元來修改字串 透過將給定字元的所有出現替換為指定的替換字元來修改字串 Sep 08, 2023 am 10:17 AM

在這個問題中,我們需要根據字元對數組中給定的字元替換給定字串的字元。我們將討論兩種不同的解決方法。在第一種方法中,我們透過遍歷給定字串的字元和字元對來替換每個字元。在第二種方法中,我們將使用長度為26的數組來儲存與每個字符相關的替換字符,並改變給定字串的字符。問題陳述−我們給定了一個包含N個小寫字母字元的字串str。同時,我們給定了包含字元對的陣列。我們需要用pairs[i][1]取代給定字串中的pairs[i][0]字元。範例範例Input–str="xyz"

將字元的替換最小化為其最近的字母,使字串成為回文 將字元的替換最小化為其最近的字母,使字串成為回文 Sep 15, 2023 pm 12:25 PM

在本文中,我們將討論一個有趣的演算法問題:「最小化將字元替換為其最接近的字母表以使字串回文。」這個問題很有趣,因為它涉及字串操作、回文檢查以及字元ASCII值的概念。讓我們深入探討這個問題。問題陳述給定一個字串,任務是將其轉換為具有最少替換次數的回文。這些替換是透過將字元更改為其最接近的字母表來實現的。理解問題回文是一個單字、片語、數字或其他字元序列,向後讀與向前讀相同。我們的目標是最大限度地減少將給定字串轉換為回文所需的替換總數。例如,考慮字串“abc”。要將其轉換為回文,我們可以將“

如何使用Vue表單處理實現表單欄位的字元替換 如何使用Vue表單處理實現表單欄位的字元替換 Aug 10, 2023 pm 05:37 PM

如何使用Vue表單處理實作表單欄位的字元替換在開發網頁應用程式時,表單是不可或缺的一部分。而在一些場景中,我們可能需要對使用者輸入的字元進行替換操作,以滿足資料格式的要求或實現某些功能。 Vue.js作為一種流行的前端框架,提供了強大的資料綁定和處理能力,使得表單處理變得更為方便。本文將介紹如何使用Vue.js實作表單欄位的字元替換功能,並提供程式碼範例。首先,

See all articles