fork download
  1. import java.io.*;
  2. import java.util.Map;
  3. import java.util.TreeMap;
  4.  
  5. public class Main {
  6. private static void countFrequency(Map<Character,Integer> freqChars, char currentChar) {
  7. if (freqChars.containsKey(currentChar)) {
  8. freqChars.put(currentChar, freqChars.get(currentChar) + 1);
  9. } else {
  10. freqChars.put(currentChar, 1);
  11. }
  12. }
  13.  
  14. private static char findFreqChar(Map<Character,Integer> freqChars) {
  15. int maxFreq = 0;
  16. char theFreqChar = 0;
  17. for (char c : freqChars.keySet()) {
  18. int currentFreq = freqChars.get(c);
  19. if (currentFreq > maxFreq) {
  20. maxFreq = currentFreq;
  21. theFreqChar = c;
  22. }
  23. }
  24. return theFreqChar;
  25. }
  26.  
  27. private static void appendTheFreqChar(StringBuilder sortedCharByFreqText, Map<Character,Integer> freqChars) {
  28. char theFreqChar = findFreqChar(freqChars);
  29. BufferedWriter writer = new BufferedWriter(sw);
  30. try {
  31. while (freqChars.containsKey(theFreqChar)) {
  32. writer.append(theFreqChar);
  33. freqChars.put(theFreqChar, freqChars.get(theFreqChar) - 1);
  34. if (freqChars.get(theFreqChar) == 0) {
  35. freqChars.remove(theFreqChar);
  36. }
  37. }
  38. writer.close();
  39. } catch (IOException e) {
  40. System.out.println("The character can't be wrote in the writer");
  41. }
  42. sortedCharByFreqText.append(sw);
  43. }
  44.  
  45. private static String sortedCharByFreq(BufferedReader reader) {
  46. TreeMap<Character,Integer> freqChars = new TreeMap<>();
  47. try {
  48. while (reader.ready()) {
  49. countFrequency(freqChars, (char)reader.read());
  50. }
  51. } catch (IOException e) {
  52. System.out.println("The character can't be read.");
  53. }
  54. StringBuilder sortedCharByFreqText = new StringBuilder();
  55. while (!freqChars.isEmpty()) {
  56. appendTheFreqChar(sortedCharByFreqText, freqChars);
  57. }
  58. return sortedCharByFreqText.toString();
  59. }
  60.  
  61. public static void main(String[] args) {
  62. System.out.println(sortedCharByFreq(reader));
  63. }
  64. }
Success #stdin #stdout 0.08s 52928KB
stdin
anahasapples
stdout
aaaappssehln