用c++语言实现假设一个字符串s采用string对象表示,设置一个递归算法逆置所有字符
时间: 2023-12-14 14:38:54 浏览: 93
可以通过递归算法实现字符串的逆置,具体实现如下:
```c++
#include <iostream>
#include <string>
using namespace std;
void reverseString(string& s, int left, int right) {
// 递归终止条件
if (left >= right) {
return;
}
// 交换左右两个字符
char temp = s[left];
s[left++] = s[right];
s[right--] = temp;
// 继续递归
reverseString(s, left, right);
}
int main() {
string s = "hello world";
reverseString(s, 0, s.size() - 1);
cout << s << endl;
return 0;
}
```
以上代码中,`reverseString` 函数接受三个参数,分别表示字符串、左边界和右边界。在每次递归时,我们交换左右两个字符的位置,并将左边界加一,右边界减一,然后继续递归下去,直到左右边界相遇为止。最终,字符串中所有字符的顺序都被逆置了。
相关问题
C++用递归逆置字符串
可以递归函数来逆置一个字符串,具体实现如下:
```c++
#include <iostream>
#include <string>
using namespace std;
void reverse(string& s, int left, int right) {
if (left >= right) {
return;
}
// 交换左右两边的字符
swap(s[left], s[right]);
// 递归处理中间的字符
reverse(s, left + 1, right - 1);
}
int main() {
string s = "Hello, world!";
reverse(s, 0, s.size() - 1);
cout << s << endl;
return 0;
}
```
在递归函数`reverse()`中,我们比较左右两端的下标,如果左下标大于等于右下标,说明已经逆置完成,直接返回。否则,我们将左右两个字符交换,并递归处理中间的字符。最终,整个字符串就被逆置了。
用递归逆置字符串
递归逆置字符串的思路是将字符串分解为首字符和剩余字符,然后将剩余字符逆置,再将首字符添加到逆置后的剩余字符的末尾。具体实现如下:
```python
def reverse_string(s):
# 递归终止条件
if len(s) == 0:
return s
else:
return reverse_string(s[1:]) + s[0]
```
这里使用了 Python 的切片操作,将字符串从第二个字符开始切片,然后将第一个字符和递归后得到的字符串拼接在一起,实现字符串的逆置。
阅读全文