6-22:编写函数void reverse(string &s),用递归算法使字符串s倒序
代码实现:
//
// main.cpp
// 6-22
//
// Created by Mickey on 2022/11/5.
//
#include <iostream>
#include <string>
using namespace std;
void reverse(string &s)
{
if(s.length()!=2)//递归
{
string r=s.substr(0,s.length()-1);//取前n-1个字符
reverse(r);
unsigned long j=s.length();
s.append(r);//将前n-1个字符的倒序加到末尾
s=s.substr(j-1,j);//去除正序排列的前n-1个字符,完成倒序
}
if(s.length()==2)//仅剩两个字符时,直接对调
{
string t=s.substr(0,1);
s.append(t);
s=s.substr(1,2);
return;
}
}
int main()
{
string s;
cout<<"请输入字符串"<<endl;
getline(cin,s);//获取s
reverse(s);
cout<<s<<endl;
return 0;
}
心得:
1.遇到递归冷静思考,画图解题
2.字符串成员函数append
s.append(r);
将字符串r加到字符串s的末尾
3.字符串成员函数substr
s=s.substr(0,1);
用字符串s的第一个字符代替s
substr(i,j)代表从字符串的第i+1个字符开始取j个组成新的字符串
4.字符串成员函数length
unsigned long j=s.length();
unsigned long数据类型。获取字符串的字符个数