def frequency_sort(s):
from collections import Counter
c=Counter(s)
return ''.join(ch*cnt for ch,cnt in c.most_common())
public String frequencySort(String s){
int[] freq=new int[128];
for(char c:s.toCharArray()) freq[c]++;
Character[] chars=new Character[s.length()];
for(int i=0;i<s.length();i++) chars[i]=s.charAt(i);
Arrays.sort(chars,(a,b)->freq[b]-freq[a]);
StringBuilder sb=new StringBuilder();
for(char c:chars) sb.append(c);
return sb.toString();
}
Counter.most_common() is elegant. Java needs custom sort with freq array.
def frequency_sort(s):
from collections import Counter
c=Counter(s)
return ''.join(ch*cnt for ch,cnt in c.most_common())
public String frequencySort(String s){
int[] freq=new int[128];
for(char c:s.toCharArray()) freq[c]++;
Character[] chars=new Character[s.length()];
for(int i=0;i<s.length();i++) chars[i]=s.charAt(i);
Arrays.sort(chars,(a,b)->freq[b]-freq[a]);
StringBuilder sb=new StringBuilder();
for(char c:chars) sb.append(c);
return sb.toString();
}
1. Count frequencies 2. Sort by frequency desc 3. Build result