字母排序 解题报告

这个题目可以采用双指针的做法,初始化左右指针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;
    }
};
全部评论

相关推荐

喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
09-27 00:29
东北大学 Java
伟大的麻辣烫:查看图片
阿里巴巴稳定性 75人发布 投递阿里巴巴等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务