题目描述
请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。
给定一个string input,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。
测试样例:
“This is inputString”
返回:“gnirtStupni si sihT”
代码
#include <iostream>
#include <string>
using namespace std;
string ReverseString(string input)
{
string b=input;
int len =0,i=0;
while(input[i++]!='\0') //计算输入字符串的长度
len++;
//方法1,清零i,将输入顺序取出,倒着替换b中元素
i=0; //i清零,后面还要用
while(input[i]!='\0') //反向装入临时字符串b中
b[(len--)-1] = input[i++];
/*方法2,将输入逆序取出,依次装入b中
while(i>0)
{ i--;
b[len-i]=input[i-1];
}
*/
return b;
}
int main()
{
string s ="This is inputString";
string ret = ReverseString(s) ;
cout <<ret<<endl;
return 0;
}
运行结果
gnirtStupni si sihT