给你一个字符串 s ,请你根据下面的算法重新构造字符串:
在任何一步中,如果最小或者最大字符不止一个 ,你可以选择其中任意一个,并将其添加到结果字符串。
请你返回将 s 中字符重新排序后的结果字符串
我们可以直接创建一个大小为 26 的桶,记录每种字符的数量。然后重复若干轮下述操作,直到答案字符串的长度与传入的字符串的长度相等,这样就可以构造出这个字符串:
class Solution {
public String sortString(String s) {
int[] nums = new int[26];
for(int i = 0; i < s.length(); i++) {
nums[s.charAt(i) - ‘a‘]++;
}
StringBuilder sb = new StringBuilder();
while(sb.length() < s.length()) {
for(int i = 0; i < nums.length; i++) {
if(nums[i] > 0) {
sb.append((char)(i + ‘a‘));
nums[i]--;
}
}
for(int i = nums.length - 1; i >= 0; i--) {
if(nums[i] > 0) {
sb.append((char)(i + ‘a‘));
nums[i]--;
}
}
}
return sb.toString();
}
}
原文:https://www.cnblogs.com/Yee-Q/p/14035762.html