Trie найти слово в десять раз слово появляется в документе

java.io. * Импорт, 
импорт Классы в java.util * ;. 

/ ** 
 * регистронезависимы 
 * / 
класс TrieNode { 
    TrieNode [] = новый новый Следующий TrieNode [26]; // только строчные буквы TRIE хранения 1 0 хранения для хранения б ... 25 Z 
    INT COUNT = 0; // количество вхождений буквы 
    междунар WordCount = 0; // число раз слово появляется 
    обугленного currentChar, 
    общественное TrieNode (символ Word) { 
        this.currentChar = слово; 
    } 
} 

общественного класса {основной 

    государственной статической силы основных (String [] арг) бросает IOException { 
        // считываем файл (поток символов) 
        BufferedReader в BufferedReader новый новый = (в InputStreamReader новый новый (новый новый в FileInputStream ( "E: \\ WORD.TXT"), "GBK" )); // это в основном направлено на китайский 
        // чтение данных 
        // извлечения данных цикла
        STR = пустая строка; 
        TrieNode новый новый TrieNode корень = ( '0'); // инициализация корневой узел 
        () = нуль (STR = in.readLine (!)) {Это время 
            ВСТАВИТЬ (корень, STR); 
        } 


        появляется // найти слово число 
       // INT COUNT = Query (корень, "мир"); 
       // System.out.println (COUNT); 
        // Находим наибольшее число вхождений слова 10 
        Карта <String, Integer> карта = новый TreeMap <String , Integer> (); // ключ по умолчанию в соответствии с порядком возрастания 
        в BufferedReader новый новый = (в InputStreamReader новый новый (новый новый в FileInputStream ( "E: \\ WORD.TXT"), "GBK")); 
        это время ((STR = in.readLine ( !)) = NULL) { 
            INT = Query Query (корень, STR); 
            map.put (STR, запрос);
        } 
        // Сортировка Сортировка по убыванию значение
        Список список <Map.Entry <String, Integer >> = новый ArrayList <Map.Entry <String, Integer >> (map.entrySet ()); 
        Collections.sort (список, новый Comparator <Map.Entry <String, Integer >> () { 
            @Override 
            общественного ИНТ сравнения (Map.Entry <String, Integer> o1, Map.Entry <String, Integer> o2) { 
                возвращение - . o1.getValue () CompareTo (o2.getValue ()); 
            } 
        }); 
        INT = 0; 
        для (Map.Entry <String, Integer> отображения: список) { 
            если (я ++ == 10) { 
                перерыва; 
            } 
            System.out.println ( "单词:" + mapping.getKey () + "出现:" + mapping.getValue ());

        in.close (); 


    } 

    Государственной статической силы вставки (TrieNode корень, String ул) { 
        ул = str.toLowerCase (); 
        символ [] = си str.toCharArray (); 
        для (INT I = 0; г <chars.length; я ++) { 
            INT индекс = символы [I] - 'а'; 
            TrieNode [] следующая = root.next; 
            если (следующий [индекс] == NULL) {//节点为Проверить наличие 
               // System.out.print ( "Вставить" + символы [я] + ";"); 
                Следующий [индекс] = новый TrieNode (символы [I]); 
            } 
            Следующий [индекс] .Count ++; 
            корень = следующий [индекс]; 
        } 
        Root.wordCount ++; 
       // System.out.println (); 
    }

    // Строка запроса существует и не существует возвращает 0, число возврата существует 
    общественный статический Int Query (TrieNode корень, STR String) { 
        IF (корень == NULL) { 
            вернуть 0; 
        } 
        STR = str.toLowerCase (); 
        полукокса [] = str.toCharArray символы (); 
        для (INT I = 0; I <chars.length, я ++) { 
            TrieNode [] = Далее root.next; 
            INT = индекс символов [I] , - 'А'; 
            ЕСЛИ (Следующая [индекс] == NULL) { 
                возвращают 0; 
            } {еще в 
                корень Далее = [индекс]; 
            } 
        } 
        вернуть root.wordCount; 
    } 


}

  

рекомендация

отwww.cnblogs.com/lick468/p/11580788.html