段落と禁止用語のリストを考えると、禁止された単語のリストにない最も頻繁に言葉を返します。そこに禁止されていない少なくとも1つの単語である、と答えがユニークであることが保証されています。
禁止用語のリスト内の単語を小文字に与えられ、句読点の自由されています。段落内の単語は大文字と小文字を区別しません。答えは小文字です。
例:
入力:
段落は=「ボブは、それがヒットした後に打球が遠くに飛んで、ボールを打ちました。」
禁止= [「ヒット」]
出力:「ボール」
:解説
「ヒット」3回発生し、それが禁止単語です。
「ボールが」2回出現(および他の単語はしません)ので、段落の中で最も頻度の高い非禁止語です。
段落内の単語は大文字と小文字を区別しません。なお、
その句読点は、(たとえ言葉に隣接している場合、例えば「ボール」)は無視され
、それが「ヒット」それが禁止されているので、それはより多くを発生しても答えではありません。
注意:
1 <= paragraph.length <= 1000
。0 <= banned.length <= 100
。1 <= banned[i].length <= 10
。- 答えは一意であり、小文字で書かれた(での発生があっても
paragraph
、それが固有名詞である場合でも、大文字のシンボルを有することができます。) paragraph
文字のみ、スペース、句読点記号で構成されてい!?',;.
- 何ハイフンやハイフン付きの言葉はありません。
- 言葉は文字だけ、決してアポストロフィまたはその他の句読点記号で構成されています。
問題の意味
需要が非禁止用語の最高周波数を表示されます
考え
HashMapの
コード
クラスソリューション{ パブリック文字列mostCommonWord(文字列、段落、文字列[]禁止){ String []型の単語 = paragraph.replaceAll( " \\にpP "" ").toLowerCase()スプリット(" \\ S + " )。 地図 <文字列、整数>マップ= 新しい HashMapの<> (); 用(文字列ワード:ワード){ 場合(map.containsKey(ワード)){ map.put(ワード、map.get(ワード) + 1 )。 } 他{ map.put(単語、 1 ); } } のために(文字列bword:禁止){ 場合(map.containsKey(bword)){ map.remove(bword)。 } } 文字列RES = "" ; 以下のための(文字列の単語:map.keySet()) であれば(RES == "" || map.get(ワード)> map.get(RES)) RES = 単語; リターンのres; } }