public class IncreasingDecreasingString { public String sortString(String s) { final int[] frequency = getFrequency(s); final StringBuilder result = new StringBuilder(); while (result.length() < s.length()) { for (int i = 0 ; i < frequency.length ; i++) { if (frequency[i] > 0) { result.append((char) ('a' + i)); frequency[i]--; } } for (int i = frequency.length - 1 ; i >= 0 ; i--) { if (frequency[i] > 0) { result.append((char) ('a' + i)); frequency[i]--; } } } return result.toString(); } private int[] getFrequency(String string) { final int[] frequencies = new int[26]; for (int i = 0 ; i < string.length() ; i++) { frequencies[string.charAt(i) - 'a']++; } return frequencies; } }