1. 程式人生 > >819. Most Common Word 統計高頻詞(暫未被禁止)

819. Most Common Word 統計高頻詞(暫未被禁止)

AS was ase ctu 處理 clas isn IT 輸出

[抄題]:

Given a paragraph and a list of banned words, return the most frequent word that is not in the list of banned words. It is guaranteed there is at least one word that isn‘t banned, and that the answer is unique.

Words in the list of banned words are given in lowercase, and free of punctuation. Words in the paragraph are not case sensitive. The answer is in lowercase.

Example:
Input: 
paragraph = "Bob hit a ball, the hit BALL flew far after it was hit."
banned = ["hit"]
Output: "ball"
Explanation: 
"hit" occurs 3 times, but it is a banned word.
"ball" occurs twice (and no other word does), so it is the most frequent non-banned word in the paragraph. 
Note that words in the paragraph are not case sensitive,
that punctuation is ignored (even if adjacent to words, such as "ball,"), 
and that "hit" isn‘t the answer even though it occurs more because it is banned.

[暴力解法]:

時間分析:

空間分析:

[優化後]:

時間分析:

空間分析:

[奇葩輸出條件]:

[奇葩corner case]:

[思維問題]:

[一句話思路]:

[輸入量]:空: 正常情況:特大:特小:程序裏處理到的特殊情況:異常情況(不合法不合理的輸入):

[畫圖]:

[一刷]:

[二刷]:

[三刷]:

[四刷]:

[五刷]:

[五分鐘肉眼debug的結果]:

[總結]:

[復雜度]:Time complexity: O() Space complexity: O()

[英文數據結構或算法,為什麽不用別的數據結構或算法]:

  1. Arrays.asList()返回的是List,而且是一個定長的List。把string數組轉成普通數組,才能存到hashset中。
public static void main(String[] args){
  2         int[] a1 = new int[]{1,2,3};
  3         String[] a2  = new String[]{"a","b","c"};
  4
  5         System.out.println(Arrays.asList(a1));
  6         System.out.println(Arrays.asList(a2));
  7     }
  打印結果如下:
  [[I@dc8569]
  [a, b, c]

刪除標點、劃分空格:

String[] words = p.replaceAll("\\pP" , "").toLowerCase().split("\\s+");

[關鍵模板化代碼]:

[其他解法]:

[Follow Up]:

[LC給出的題目變變變]:

[代碼風格] :

819. Most Common Word 統計高頻詞(暫未被禁止)