电子商务类型的网站,当前网站开发什么语言,辽宁建设工程信息网解锁需要什么资料,花桥网站建设给定一个字符串#xff0c;请将字符串里的字符按照出现的频率降序排列。
示例 1:输入:
tree输出:
eert解释:
e出现两次#xff0c;r和t都只出现一次。
因此e必须出现在r和t之前。此外#xff0c;eetr也是一个有效的答案。
示例 2:输入…给定一个字符串请将字符串里的字符按照出现的频率降序排列。
示例 1:输入:
tree输出:
eert解释:
e出现两次r和t都只出现一次。
因此e必须出现在r和t之前。此外eetr也是一个有效的答案。
示例 2:输入:
cccaaa输出:
cccaaa解释:
c和a都出现三次。此外aaaccc也是有效的答案。
注意cacaca是不正确的因为相同的字母必须放在一起。
示例 3:输入:
Aabb输出:
bbAa解释:
此外bbaA也是一个有效的答案但Aabb是不正确的。
注意A和a被认为是两种不同的字符。 解题思路
字符串的组成元素有52个大小写字母和10个数字因此我们可以直接分为62个桶使用二维数组记录下元素和以及其出现的次数随后对出现次数进行排序即可。
代码
class Solution {public String frequencySort(String s) {int ns.length();int[][] cnt new int[62][2];for (int i0;i62;i)cnt[i][0]i;for (int i0;in;i){if(s.charAt(i)0s.charAt(i)9)cnt[s.charAt(i)-052][1];elsecnt[s.charAt(i)-a0?s.charAt(i)-a:s.charAt(i)-A26][1];}Arrays.sort(cnt,(o1, o2) - o2[1]-o1[1]);StringBuilder res new StringBuilder();for (int i0;i52;i){for (int j0;jcnt[i][1];j){if(cnt[i][0]52)res.append((char)(0cnt[i][0]-52));else res.append((char)(cnt[i][0]26?Acnt[i][0]-26:acnt[i][0]));}}return res.toString();}
}