2012-11-07 3 views
0

연습을 위해 자바에서 빈번히 알파벳 문자열을 순서대로 정렬하려고합니다. 그래서 'banana'는 'bnnaaa'가되어야하고 'grammar'는 'gaammrr'이되어야합니다. 여기 내가 지금까지 가지고있는 것이있다.주파수를 기준으로 문자열을 정렬하고 Java에서 알파벳순으로 정렬하려면 어떻게합니까?

public static orderByFrequencyAndThenAlphabet(String str) { 
    // 128 ASCII characters possible. 
    int[] charCount = new int[128] 

    // Get the counts. 
    str = str.toCharArray(); 
    for (char c : str) { 
    charCount[int(c)] += 1; 
    } 

    // Sort by frequency... 
} 

필자는 데이터 구조에 입력 문자열의 각 문자에 대한 개수를 저장하도록 지정했습니다. 그러나 어떻게 데이터 구조를 사용하여 빈도별로 문자를 정렬합니까? 우선 순위 큐를 사용해야합니까?

+0

'Comparable' 인터페이스를 사용할 수 있습니까? –

답변

1

문자열의 모든 문자를 저장하는 문자 배열을 만드는 것뿐입니다 (문자 배열의 크기는 문자열의 길이 여야합니다.). 그런 다음 문자 배열에 정렬을 적용한 다음 정렬 된 문자 배열로 새 문자열을 구성합니다 (배열을 정렬 할 때 올바른 문자 케이싱을 지정하십시오). 이는 비효율적이지만 작업이 완료됩니다.

관련 문제