字符串反转 [英] string reversal
问题描述
嗨。如果不使用循环就可以反转一个字符串?感谢您的帮助。
Jerico
Hi。如果不使用循环可以反转一个字符串?感谢您的帮助。
Jerico
你的意思是
string string_reverse(const string& s){
string ret;
copy(s.rbegin(),s.rend(),back_inserter(ret));
返回ret;
}
你的意思是
string string_reverse(const string& s){
string ret;
copy(s.rbegin(),s.rend(),back_inserter(ret));
返回ret;
}
如果你想避免for循环或while循环那么你必须使用递归
void str_reverse(char str [], int startIndex,int endIndex)
{
if(startIndex> = endIndex)return;
str_reverse(str,++ startIndex, - -endIndex);
str [startIndex-1] ^ = str [endIndex] ^ = str [startIndex-1] ^ = str [endIndex];
}
int main(int argc,char * argv [])
{
char str [] =" MyString";
str_reverse(str,0,strlen(str));
printf("%s \ n",str);
返回0;
}
只是一个提示,任何尾端递归都可以转换为while循环,这正是大多数(所有?)编译器所做的。
Hi.How can a string be reversed without using a loop?thanks for any help.
Jerico
Hi.How can a string be reversed without using a loop?thanks for any help.
JericoYou mean something like
string string_reverse( const string& s ) {
string ret;
copy( s.rbegin(), s.rend(), back_inserter( ret ) );
return ret;
}
You mean something like
string string_reverse( const string& s ) {
string ret;
copy( s.rbegin(), s.rend(), back_inserter( ret ) );
return ret;
}
If you want to avoid for loop or while loop then you have to use recursion
void str_reverse(char str[],int startIndex,int endIndex)
{
if(startIndex >= endIndex) return;
str_reverse(str,++startIndex,--endIndex);
str[startIndex-1]^=str[endIndex]^=str[startIndex-1]^=str[endIndex];
}
int main(int argc,char* argv[])
{
char str[] = "MyString";
str_reverse(str,0,strlen(str));
printf("%s\n",str);
return 0;
}
Just a hint, any tail end recursion can be converted into a while loop, and that''s precisely what most (all?) compilers do.
这篇关于字符串反转的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!