字母排序 解题报告
这个题目可以采用双指针的做法,初始化左右指针l=0, r=-1和一个记录当前元素的变量now=0,然后就一直循环,其中循环条件为 now<=r:
如果s[now]=='a' 交换 s[now] 和 s[l], 然后指针now和指针l都加1
如果s[now]=='c' 交换 s[now] 和 s[r], 然后指针now加1,指针r减1
如果s[now]=='b' 指针now加1
代码如下:
class Solution {
public:
/**
*
* @param s string字符串
* @return string字符串
*/
string sortString(string s) {
// write code here
int len = s.size();
int l = 0, r = len-1, now = 0;
while(now <= r) {
if(s[now] == 'a') swap(s[now++], s[l++]);
else if(s[now] == 'c') swap(s[now], s[r--]);
else now++;
}
return s;
}
};
查看20道真题和解析