LC1370 上升下降字符串

因为出现的都是小写字母,所以最多就有26个,用一个存储26个元素的数组来进行计数,正着扫,反着扫,循环,直到数组的所有位全为0,即可解决问题。
代码如下:

class Solution {
public:
    string sortString(string s) {
        string ans;
        int h[30] = {0};
        for (int i = 0; i < s.size(); i++) h[s[i] - 'a'] += 1;
        while (s.size() - ans.size()) {
            for (int i = 0; i < 26; i++) {
                if (h[i]) h[i] -= 1, ans += 'a' + i;
            }
            for (int i = 25; i >= 0; i--) {
                if (h[i]) h[i] -= 1, ans += 'a' + i;
            }
        }
        return ans;
    }
};
posted @ 2020-05-03 16:35  Lee先森的博客  阅读(121)  评论(0编辑  收藏  举报