给定一个字符串,请将字符串里的字符按照出现的频率降序排列。
输入:
“tree”
输出:
“eert”
输入:
“cccaaa”
输出:
“cccaaa”
输入:
“Aabb”
输出:
“bbAa”
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sort-characters-by-frequency
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution:
def frequencySort(self, s: str) -> str:
c=collections.Counter(s)
cc=sorted(c.items(),key=lambda x:x[1],reverse=True)
res=list()
for i,v in cc:
for j in range(v):
res.append(i)
return "".join(res)
class Solution {
public String frequencySort(String s) {
// 存储每个字符的次数
HashMap<Character, Integer> hashMap = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
hashMap.put(s.charAt(i), hashMap.getOrDefault(s.charAt(i), 0) + 1);
}
List<Character> list = new ArrayList<>(hashMap.keySet());
// 降序排序
Collections.sort(list, (a, b) -> hashMap.get(b) - hashMap.get(a));
StringBuffer res = new StringBuffer();
for (int i = 0; i < list.size(); i++) {
char ch = list.get(i);
int freq = hashMap.get(ch);
for (int j = 0; j < freq; j++) {
res.append(ch);
}
}
return res.toString();
}
}
class Solution {
public String frequencySort(String s) {
int n = s.length();
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < n; i++) {
char c = s.charAt(i);
map.put(c, map.getOrDefault(c, 0) + 1);
}
PriorityQueue<Character> pq = new PriorityQueue<>((o1, o2) -> map.get(o2) - map.get(o1));
pq.addAll(map.keySet());
StringBuffer sb = new StringBuffer();
while(!pq.isEmpty()) {
char c = pq.poll();
for (int i = 0; i < map.get(c); i++) sb.append(c);
}
return sb.toString();
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务