字符串转换(也称为字符串转换)是 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中文网其他相关文章!

掌握C 中的多态性可以显着提高代码的灵活性和可维护性。 1)多态性允许不同类型的对象被视为同一基础类型的对象。 2)通过继承和虚拟函数实现运行时多态性。 3)多态性支持代码扩展而不修改现有类。 4)使用CRTP实现编译时多态性可提升性能。 5)智能指针有助于资源管理。 6)基类应有虚拟析构函数。 7)性能优化需先进行代码分析。

C DestructorSprovidePreciseControloverResourCemangement,whergarBageCollectorSautomateMoryManagementbutintroduceunPredicational.c Destructors:1)允许CustomCleanUpactionsWhenObextionsWhenObextSaredSaredEstRoyed,2)RorreasereSouresResiorSouresiorSourseResiorMeymemsmedwhenEbegtsGoOutofScop

在C 项目中集成XML可以通过以下步骤实现:1)使用pugixml或TinyXML库解析和生成XML文件,2)选择DOM或SAX方法进行解析,3)处理嵌套节点和多级属性,4)使用调试技巧和最佳实践优化性能。

在C 中使用XML是因为它提供了结构化数据的便捷方式,尤其在配置文件、数据存储和网络通信中不可或缺。1)选择合适的库,如TinyXML、pugixml、RapidXML,根据项目需求决定。2)了解XML解析和生成的两种方式:DOM适合频繁访问和修改,SAX适用于大文件或流数据。3)优化性能时,TinyXML适合小文件,pugixml在内存和速度上表现好,RapidXML处理大文件优异。

C#和C 的主要区别在于内存管理、多态性实现和性能优化。1)C#使用垃圾回收器自动管理内存,C 则需要手动管理。2)C#通过接口和虚方法实现多态性,C 使用虚函数和纯虚函数。3)C#的性能优化依赖于结构体和并行编程,C 则通过内联函数和多线程实现。

C 中解析XML数据可以使用DOM和SAX方法。1)DOM解析将XML加载到内存,适合小文件,但可能占用大量内存。2)SAX解析基于事件驱动,适用于大文件,但无法随机访问。选择合适的方法并优化代码可提高效率。

C 在游戏开发、嵌入式系统、金融交易和科学计算等领域中的应用广泛,原因在于其高性能和灵活性。1)在游戏开发中,C 用于高效图形渲染和实时计算。2)嵌入式系统中,C 的内存管理和硬件控制能力使其成为首选。3)金融交易领域,C 的高性能满足实时计算需求。4)科学计算中,C 的高效算法实现和数据处理能力得到充分体现。

C 没有死,反而在许多关键领域蓬勃发展:1)游戏开发,2)系统编程,3)高性能计算,4)浏览器和网络应用,C 依然是主流选择,展现了其强大的生命力和应用场景。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。