將一個字串轉換為其具有abcd..z作為子序列的形式
字串轉換(也稱為字串轉換)是 C 中的一種操作,在整個過程執行後,將結果儲存在輸出陣列中。在C 中,有一個名為「transform()」的函數,存在於C 環境的目錄中,透過它我們可以將字串轉換為新的字串。
有兩種形式的轉換函數−
一元運算
#操作應用於輸入陣列的每個元素。
手術完成後,結果將儲存在一個輸出陣列中。
二元運算
操作適用於特定陣列的每個元素。
第一個輸入元素和第二個對應的輸入元素參與了操作。
輸出資料將儲存在一個輸出數組中。
子序列字串是由對輸入字串執行各種操作(例如:刪除)產生的全新字串。對於子序列字串,操作發生時不會影響剩餘的字元。
對於字串轉換,輸入包含長度為n 1的操作字串。原始字元屬於a到z的系列。列印字串的長度在這裡被視為n,這裡是一個輸出字串。
在本文中,我們將學習如何在C 環境中轉換一個字串,使其具有abcd….z作為一個子序列。
遞歸演算法產生後續字串
透過使用遞歸方法,下面是一個可能的演算法用於一個後續字串。這是特定的字串,T是完成操作所需的時間。
步驟 1 - 計算出現次數。
步驟2 - 如果i = length(s)且j = length(T)。
第三步−然後回傳1。
第4步 - 結束。
步驟5 - 如果i = length(S)。
步驟6 - 然後回傳0。
第7步 - 結束。
步驟 8 − 計數
步驟9 - 如果,j
步驟10 − Count
#第11步 - 結束。
第12步 - Count
第13步 - 返回計數。
第14步 - 結束。
後續陣列的語法
Here, we have two given sequences. X and Y. Initialize a table with a dimension of X.length * Y.length X.label1 = X Y.label2 = Y CS1[0][] = 0 CS2[][0] = 0 Start from CS[1][1] Compare X[i] and Y[j] If X[i] = Y[j] CS[i][j] = 1 + CS[i-1, j-1] Point an arrow to CS[i][j] Else CS[i][j] = max(CS[i-1][j], CS[i][j-1]) Point an arrow to max(CS[i-1][j], CS[i][j-1])
這裡我們建立了一個後續陣列的基本工作語法。當有兩個序列時,我們必須按照以下步驟來取得輸出。
跟隨的方法
方法1−使用C 轉換字串
透過使用C 對字串進行一元操作的方法2
#使用C 對字串進行二進位操作的方法3
#使用C 列印所有可能的後續字串
使用C 將字串轉換為具有abcd….z作為子序列的方法5
#使用 C 轉換字串
在這段C 程式碼中,我們創建了一個新的字串,並從輸入字串中刪除了所有的元音字母。在這些元音字母的位置上添加了#。
範例 1
#include <bits/stdc++.h> using namespace std; string change_case(string r) { int l = r.length(); for(int i = 0 ; i < l ; i++) { if(r[i] >= 'a' && r[i] <= 'z') r[i] = r[i] - 32; else if(r[i] >= 'A' && r[i] <= 'Z') r[i] = r[i] + 32; } return r; } string delete_vowels(string a) { string temp = ""; int l = a.length(); for(int i = 0 ; i < l ; i++) { if(a[i] != 'a' && a[i] != 'e' && a[i] != 'i' && a[i] != 'o' && a[i] != 'u' && a[i] != 'A' && a[i] != 'E' && a[i] != 'O' && a[i] != 'U'&& a[i] != 'I') temp += a[i]; } return temp; } string insert_hash(string a) { string temp = ""; int l = a.length(); for(int i = 0 ; i < l ; i++) { if((a[i] >= 'a' && a[i] <= 'z') || (a[i] >= 'A' && a[i] <= 'Z')) temp = temp + '#' + a[i]; else temp = temp + a[i]; } return temp; } void transformSting(string a) { string b = delete_vowels(a); string c = change_case(b); string d = insert_hash(c); if(d=="") cout<<"-1"<<endl; else cout << d<<endl; } int main() { string a = "RudraDevDas!!"; string b = "aeiou"; transformSting(a); transformSting(b); return 0; }
輸出
#r#D#R#d#V#d#S!! -1
使用C 對字串進行一元操作
在這段特定的程式碼中,我們展示瞭如何對輸入數組進行一元操作。此函數接受一個指向單一輸入的起始和結束位置的指標。並在輸出數組的起始位置進行操作。
Example 2
的中文翻譯為:範例2
#include <iostream> #include <algorithm> using namespace std; int op_increment (int x) { x = x + 1; return x; } int main () { int n = 5; int input_array[] = {7, 16, 10, 97, 2001}; int output_array[n]; std::cout << "Input array present here:"; for(int i=0; i<5; i++){ cout << ' ' << input_array[i]; } cout << '\n'; transform (input_array, input_array+5, output_array, op_increment); std::cout << "The output array now contains with:"; for(int i=0; i<5; i++){ cout << ' ' << output_array[i]; } cout << '\n'; return 0; }
輸出
Input array present here: 7 16 10 97 2001 The output array now contains with: 8 17 11 98 2002
使用C 對字串進行二進位操作
在這段特定的程式碼中,我們展示瞭如何在輸入數組上進行二進位操作。函數transform()在起始點和第一個輸入陣列之間加入了一個指標。請記住,二進位操作總是在兩個輸入資料集上進行。
Example 3
的中文翻譯為:範例 3
#include <iostream> #include <algorithm> #include <vector> using namespace std; int op_add (int i, int j) { return i+j; } int main () { int n = 5; int arr1[] = {7, 16, 10, 2001, 1997}; int arr2[] = {1, 2, 3, 4, 5}; int output[n]; std::cout << "Input data in array1:"; for(int i=0; i<n; i++){ cout << ' ' << arr1[i]; } cout << '\n'; std::cout << "Input data in array2:"; for(int i=0; i<n; i++){ cout << ' ' << arr2[i]; } cout << '\n'; std::transform (arr1, arr1+n, arr2, output, op_add); std::cout << "Output array is here now:"; for(int i=0; i<5; i++){ cout << ' ' << output[i]; } cout << '\n'; return 0; }
輸出
Input data in array1: 7 16 10 2001 1997 Input data in array2: 1 2 3 4 5 Output array is here now: 8 18 13 2005 2002
使用C 列印所有後續字串
應用選擇和不選擇的概念來找出特定陣列的所有子序列。在這個過程中,可能會刪除一些字元而不改變元素的順序。在這裡,這個過程的時間複雜度是O(2^n),空間複雜度是O(n)。
範例 4
#include <bits/stdc++.h> using namespace std; void printSubsequence(string input, string output) { if (input.empty()) { cout << output << endl; return; } printSubsequence(input.substr(1), output + input[0]); printSubsequence(input.substr(1), output); } int main() { string output = ""; string input = "rudraabonikoaa"; printSubsequence(input, output); return 0; }
輸出
rudraabonikoaa rudraabonikoa rudraabonikoa rudraaboniko rudraabonikaa rudraabonika rudraabonika rudraabonik rudraabonioaa rudraabonioa rudraabonioa rudraabonio rudraaboniaa rudraabonia rudraabonia
將字串轉換為其具有abcd…z作為子序列
這是一種特定的過程,用於將字串轉換為具有abcd...z作為子序列的形式。
初始化字元。
如果長度小於26,則傳回false。
迭代循環從0到s.size() - 1。
如果字元達到z,則跳出循環。
如果目前字元小於s或等於字元。
將目前字元的增量替換為1。
如果字元小於或等於 z,則傳回 false。
否則,回傳true。
在这个过程中,时间复杂度为O(n),辅助空间为O(1)。这里,n是特定字符串的长度。
Example 5
的中文翻译为:示例5
#include <bits/stdc++.h> using namespace std; bool transformString(string& s) { char ch = 'a'; if (s.size() < 26) return false; for (int i = 0; i < s.size(); i++) { if (int(ch) > int('z')) break; if (s[i] <= ch) { s[i] = ch; ch = char(int(ch) + 1); } } if (ch <= 'z') return false; return true; } int main() { string str = "aaaaaaaaaaaaaaaaaaaaaaaaaaa"; if (transformString(str)) cout << str << endl; else cout << "Not Possible" << endl; return 0; }
输出
abcdefghijklmnopqrstuvwxyza
结论
在本文中,我们学习了使用C++环境进行字符串转换及其不同形式。通过遵循特定的算法和语法,我们检查和构建了一些不同的C++代码,并了解了如何转换字符串,使其具有abcd...z作为子序列。
以上是將一個字串轉換為其具有abcd..z作為子序列的形式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

使用Boolean類別的parseBoolean()方法將字串轉換為布林值的方法在Java程式設計中,經常會遇到需要將字串轉換為布林值的情況。而Java中的Boolean類別提供了一個非常方便的方法-parseBoolean(),可以將字串轉換為對應的布林值。本文將詳細介紹這個方法的使用,並提供對應的程式碼範例。首先,我們需要了解parseBoolean()方

使用Java的Double.parseDouble()函數將字串轉換為雙精確度浮點數在Java程式設計中,我們經常需要將字串轉換為數值類型。對於雙精確度浮點數,Java提供了一個非常方便的方法,即Double.parseDouble()函數。本文將介紹該函數的用法,並附上一些範例程式碼,幫助讀者更好地理解並使用該函數。 Double.parseDouble()函數是

快速學會在Go語言中進行字串到數組的轉換在Go語言中,字串與數組之間的轉換是一個常見的操作,特別是在處理資料時經常會遇到需要將字串轉換為數組的情況。本文將介紹如何在Go語言中快速學會實作字串到陣列的轉換,讓你能夠輕鬆應付類似的問題。在Go語言中,我們可以使用strings套件提供的Split函數來將字串依照指定的分隔符號拆分成一個陣列。以下是一

標題:使用PHP實作字串轉換為16進位並實現反向輸出在日常開發中,我們有時需要將字串轉換為16進位表示,以便進行資料傳輸或加密處理。本文將介紹如何使用PHP實作將字串轉換為16進制,並實現反向輸出的功能。首先,我們需要寫一個PHP函數,來實現將字串轉換為16進位的函數。以下是一個範例程式碼:functionstringToHex($string)

StringBuilder類別的append()方法接受String值並將其新增至目前物件。將字串值轉換為StringBuilder物件-取得字串值。附加使用append()方法將字串取得到StringBuilder。範例在下面的Java程式中,我們是將字串陣列轉換為單一StringBuilder物件。 即時示範publicclassStringToStringBuilder{ publicstaticvoidmain(Stringargs[]){&a

如何使用Python的upper()函數將字串轉換為大寫,需要具體程式碼範例Python是一種簡單易學的程式語言,它提供了許多內建函數來處理字串。其中一個常用的函數是upper()函數,它可以將字串中的所有字母轉換為大寫形式。本文將詳細介紹如何使用Python的upper()函數,並提供對應的程式碼範例。首先,讓我們來了解一下upper()函數的用法。 up

如何使用C#中的Enum.Parse函數將字串轉換為枚舉類型的值在C#中,枚舉(Enum)是一種用於宣告一組相關常數的資料型別。當我們需要將字串轉換為枚舉類型的值時,可以使用Enum.Parse函數來實現。本文將詳細介紹如何使用Enum.Parse函數,並給出具體的程式碼範例。 Enum.Parse函數是一個強大的方法,它可以從指定的字串中嘗試解析出枚舉類

使用strconv.ParseInt函數將字串轉換為指定進位的整數儘管Go語言中的strconv套件提供了許多用於類型轉換的函數,但有時我們仍然需要自訂的類型轉換。當我們需要將字串轉換為指定進位的整數時,可以使用strconv.ParseInt函數來完成。 strconv.ParseInt函數的參數包括要轉換的字串、指定的進位和結果整數的位數。它返回轉換
