目錄
遞歸演算法產生後續字串
後續陣列的語法
跟隨的方法
#使用 C 轉換字串
範例 4
輸出
使用C 對字串進行一元操作
Example 5
使用C 對字串進行二進位操作
使用C 列印所有後續字串
將字串轉換為其具有abcd…z作為子序列
示例5
输出
结论
首頁 後端開發 C++ 將一個字串轉換為其具有abcd..z作為子序列的形式

將一個字串轉換為其具有abcd..z作為子序列的形式

Sep 01, 2023 pm 02:17 PM
字串轉換 子序列形式 字母序列轉換

將一個字串轉換為其具有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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡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)

使用Boolean類別的parseBoolean()方法將字串轉換為布林值的方法 使用Boolean類別的parseBoolean()方法將字串轉換為布林值的方法 Jul 26, 2023 pm 08:17 PM

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

使用java的Double.parseDouble()函數將字串轉換為雙精確度浮點數 使用java的Double.parseDouble()函數將字串轉換為雙精確度浮點數 Jul 26, 2023 am 09:25 AM

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

快速學會在Go語言中進行字串到陣列的轉換 快速學會在Go語言中進行字串到陣列的轉換 Mar 12, 2024 pm 10:27 PM

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

用PHP將字串轉換為16進位並實現反向輸出 用PHP將字串轉換為16進位並實現反向輸出 Mar 21, 2024 pm 03:33 PM

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

在Java中將字串轉換為StringBuilder 在Java中將字串轉換為StringBuilder Sep 02, 2023 pm 03:57 PM

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

如何使用Python的upper()函數將字串轉換為大寫 如何使用Python的upper()函數將字串轉換為大寫 Nov 18, 2023 pm 01:14 PM

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

如何使用C#中的Enum.Parse函數將字串轉換為枚舉類型的值 如何使用C#中的Enum.Parse函數將字串轉換為枚舉類型的值 Nov 18, 2023 am 11:44 AM

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

使用strconv.ParseInt函數將字串轉換為指定進位的整數 使用strconv.ParseInt函數將字串轉換為指定進位的整數 Jul 24, 2023 pm 03:33 PM

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

See all articles