题目描述
请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。
给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。
测试样例:
"This is nowcoder"
返回:"redocwon si sihT"思路:利用两个分别指向首字符和尾字符的iterator来实现首尾字符交换,更新“”首尾“”。
1
class Reverse {
2
public:
3
string reverseString(string iniString) {
4
string::iterator begin;
5
string::iterator end;
6
decltype(iniString.size()) size = iniString.size();
7
if (size==0 || size==1)
8
return iniString;
9
begin = iniString.begin();
10
end = iniString.end()-1;
11
while(begin < end){//string和vector 的iterator have lessthan<,>operetor.
12
char c = *begin;
13
*begin = *end;
14
*end = c;
15
++begin;
16
--end;
17
}
18
return iniString;
19
}
20
};
您的代码已保存