C++ 在一个字符串中交替反转k个字符
在这个教程中,我们使用C++编程逻辑来实现在输入字符串中交替反转k个字符的例子。我们定义k的值来反转给定字符串中的字符。K是要反转的字符数。k的值可以是任何值。如果k的值大于字符串中的字符总数,我们不会反转任何字符。
演示1
String = “tutorialspoint”
K = 4
输出
otutrialiopsnt
在上面的演示中,我们考虑一个字符串“tutorialspoint”,将其每4个字符中的交替字符进行反转。k的值为4. K=4表示先反转前4个字符,然后反转接下来的4个字符,以此类推,直到整个字符串都被处理。在给定字符串中反转每一个交替的k个字符后,结果为otutrialiopsnt。
演示2
String = “hello”
K = 2
输出
ehllo
在以上示例中,我们使用输入字符串“hello”。k的值为2。我们会将输入字符串中每隔2个字符反转一次。反转后的输出为“ehllo”。
C++库函数
语法
length(): 这是一个字符串类库函数,返回字符串的长度。字符串的长度是以字节格式计算的,等于字符串中字符的总数。
string_name.length();
size(): 它是在<std>
头文件中定义的一个标准库函数。它返回字符串的大小。
string_name.size();
reverse(): 此库函数定义在标准模板C++库中。它改变了字符串的字符顺序。为了反转字符串,它需要两个参数:字符串的起始指针和结束指针。
reverse(string_name.begin(), string_name.end());
步骤
- 输入一个字符串。
-
定义k的值。
-
反转输入字符串的前k个字符。
-
跳过字符串中的下一个k个字符。
-
反转字符串中的其余k个字符。
-
打印反转后的字符串。
示例1
我们通过考虑一个输入字符串来实现上述描述的问题。首先反转输入字符串的k个字符,然后使用公式k*2的索引值跳到下一个交替的k个字符。
#include <bits/stdc++.h>
using namespace std;
// user-defined function to reverse the alternate k characters of the string
string reverseString(string str, int k, int l){
for (int x = 0; x < str.size();){
// when the string has characters less the the value of k
if (x + k > l)
break;
//reversing the starting characters of k value
reverse(str.begin() + x, str.begin() + x + k);
// moving in the string for reversing k characters
x += 2 * k;
}
return str;
}
// Controller
int main(){
string str = "tutorialspoint";
int l = str.length();
int k = 4;
cout << "The reversed string is: "<< reverseString(str, k, l);
return 0;
}
输出
The reversed string is: otutrialiopsnt
示例2
在这个实现中,我们遍历输入字符串“tutorialspoint”,并将k的值定义为2。创建一个用户定义的函数reverseString(),它通过反转k个字符并跳过下一个k个字符来遍历字符串。这个过程一直持续到整个字符串被覆盖。
#include <bits/stdc++.h>
using namespace std;
// User-defined function to reverse alternate k characters
//of the input string
string reverseString(string s, int k, int m){
string result = "";
int x = 0, y = 0;
// Traversing the string s till the end
while (x < m){
// Traversing the string till the last character and trading backward
for (y = min(x + k, m) - 1; y >= x; y--)
result += s[y];
x = min(x + k, m);
// Traversing the string for the x to x+k characters
for (y = x; y < min(x + k, m); y++)
result += s[y];
x = y;
}
// Returning result
return result;
}
// Controller
int main(){
string s = "tutorialspoint";
int M = s.length();
int K = 2;
cout << "The reversed string for every alternate k character is : "<< reverseString(s, K, M);
return 0;
}
输出
The reversed string for every alternate k character is : uttoiralpsoitn
结论
我们已经到达教程的末尾。在本教程中,我们实现了两个示例来反转输入字符串中的交替k个字符。对于每个实现,要定义k的值。使用C++库的length()和size()函数来找到输入字符串的长度,以便可以进行遍历。
使用两个输入字符串演示了任务,并解释了C++实现如何生成结果。