我正在尝试编写一个反转字符串的递归方法,如下所示.
void reverse(string s,int i,int l)
{
static int j;
while(i<l)
{
char ch=s[i];
cout<<ch<<endl;
reverse(s,i+1,l);
cout<<"after="<<ch<<endl;
s[j]=ch;
j++;
}
cout<<s<<endl;
s[j]=0;
}
Run Code Online (Sandbox Code Playgroud)
但我的输出不正确."after="<<ch始终打印字符串的最后一个字符.函数的参数是s是std :: string,i是从0开始的索引,l是字符串的长度.任何人都可以指出我做错事的地方.
你可能已经弄明白了这个问题.
另一种方法,如果你不喜欢/想要迭代器或反向函数.
string revStr(string str){
if (str.length() <= 1) {
return str;
}else{
return revStr(str.substr(1,str.length()-1)) + str.at(0);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
874 次 |
| 最近记录: |