因为出现的都是小写字母,所以最多就有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;
}
};