字符串反转 [英] string reversal

查看:93
本文介绍了字符串反转的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨。如果不使用循环就可以反转一个字符串?感谢您的帮助。


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.

Jerico

You 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆