昨天工作有点忙,题目做了没来得及记录,今天补一下!!!
题目描述:
思路: 1.要想再次对字符进行升序和降序的排列,首先我们要把字符从小到大排列,并且要记录次数
2.最后的提示说s 只包含小写英文字母。,所以我们只需要用一个26长度的int数组就可以在记录字符
出现次数的同时进行排序了,应为小写英文字母也就26个。
3.按照题意先对字符进行升序拼接,再进行倒序拼接,直到拼接结束。
代码如下:
public String sortString(String s) {
int[] count = new int[26];
for (int i = 0; i < s.length(); i++) {
count[s.charAt(i) - 'a'] += 1;
}
StringBuilder result = new StringBuilder();
while (result.length() < s.length()) {
for (int i = 0; i < count.length; i++) {
if (count[i] > 0) {
result.append(((char) (i + 'a')));
count[i]--;
}
}
for (int i = count.length - 1; i >= 0; i--) {
if (count[i] > 0) {
result.append(((char) (i + 'a')));
count[i]--;
}
}
}
return result.toString();
}