字母排序 解题报告
这个题目可以采用双指针的做法,初始化左右指针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; } };