哈希(5)
2017-10-24 11:16
232 查看
原题:
答案:
/** * Created by gouthamvidyapradhan on 25/03/2017. * Given a string, sort it in decreasing order based on the frequency of characters. * <p> * Example 1: * <p> * Input: * "tree" * <p> * Output: * "eert" * <p> * Explanation: * 'e' appears twice while 'r' and 't' both appear once. * So 'e' must appear before both 'r' and 't'. Therefore "eetr" is also a valid answer. * Example 2: * <p> * Input: * "cccaaa" * <p> * Output: * "cccaaa" * <p> * Explanation: * Both 'c' and 'a' appear three times, so "aaaccc" is also a valid answer. * Note that "cacaca" is incorrect, as the same characters must be together. * <p> * Example 3: * <p> * Input: * "Aabb" * <p> * Output: * "bbAa" * <p> * Explanation: * "bbaA" is also a valid answer, but "Aabb" is incorrect. * Note that 'A' and 'a' are treated as two different characters. */
答案:
public class SortCharByFrequency { class Freq { int i; int c; } private int[] buff = new int[256]; /** * Main method * * @param args * @throws Exception */ public static void main(String[] args) throws Exception { System.out.println(new SortCharByFrequency().frequencySort("askdfkasdkfasdkljfklasdjfkl")); } 4000 public String frequencySort(String s) { if (s == null || s.isEmpty()) return s; Arrays.fill(buff, 0); StringBuilder sb = new StringBuilder(); for (int i = 0, l = s.length(); i < l; i++) buff[s.charAt(i)]++; List<Freq> fList = new ArrayList<>(); for (int i = 0; i < 256; i++) { if (buff[i] > 0) { Freq f = new Freq(); f.i = i; f.c = buff[i]; fList.add(f); } } Collections.sort(fList, (o1, o2) -> Integer.compare(o2.c, o1.c)); for (Freq f : fList) { char c = (char) f.i; int freq = f.c; while (freq-- > 0) sb.append(c); } return sb.toString(); } }
相关文章推荐
- 数据结构之哈希(poj3274)
- Java 理论与实践: 哈希
- 简单哈希-hdoj-1425-sort
- 哈希
- Oracle里的哈希连接原理
- 哈希与多级哈希
- 元数据与一致性哈希的比较
- 哈希(3) java中的hashcode
- uva 12326 & hdu 4092 - Yummy Triangular Pizza(哈希+打表)
- 哈希与位图(Hash and BitMap)
- 6. 哈希。哈希函数的有哪些种? 处理冲突的方法? 闭散列方法有哪些?
- 哈希的妙用
- uva 141(哈希)
- 加盐密码哈希:如何正确使用(转载)
- POJ 2774 哈希+二分长度
- 【算法学习】Consistent Hash 一致性哈希
- 对哈希表的小见——再散列(嵌套)
- 局部敏感哈希(Locality-Sensitive Hashing, LSH)方法介绍
- [HDU 4821] String (字符串哈希)
- SQL执行计划-嵌套连接、哈希连接和合并连接