Description
Write a function that takes a string as input and returns the string reversed.
Example:
Given s = "hello", return "olleh".
My solution
第一次方案为新开辟一个str,每次str=s[i]+str, 报错为内存超过限制.
故改用如下in place的方式:
class Solution {
public:
string reverseString(string s) {
int size=s.size();
for(int i=0;i<size/2;i++){
s[i]^=s[size-i-1];
s[size-i-1]^=s[i];
s[i]^=s[size-i-1];
}
return s;
}
};
Discuss
discuss中发现思路跟我的类似, 但是具体代码写法有所不同, 实际上比我的效率和可理解要好:
class Solution {
public:
string reverseString(string s) {
int i = 0, j = s.size() - 1;
while(i < j){
swap(s[i++], s[j--]);
}
return s;
}
};
采用两头的两个指针i,j进行向中间夹逼. 效率上而言,我的要做减法,效率低一些.这道题还看不出两种写法具体优劣, 参见leetcode 345, 用方式2就很条理清晰了.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。