すべての単語の連結でのLC30のサブストリング
二つのハッシュマップ
試合後の各単語の単語[]の出現のレコード番号を作るために、使用されます
各単語のI〜Jの発生を記録するために使用されるソース文字列、および元の比率
アイデアは、すべての連続した単語[]のソース文字列の長さをチェックすることである。長さ()*単語[0] .LENGTHサブストリング
(; - ; iは++ words.length()*単語[0] .LENGTH iがs.length()を<I = 0)のための
1 クラスソリューション{ 2 公共一覧<整数> findSubstring(文字列の文字列は、[]の単語){ 3 であれば(s.length()== 0 || words.length == 0 ) 4 戻り 新しいのArrayList <整数> () ; 5 のHashMap <文字列、整数>のカウント= 新しい HashMapの<> (); 6 7 ための(文字列I:ワード) 8 count.put(I、count.getOrDefault(I、0)+ 1 )。 9 INT LEN =言葉[0 ] .LENGTH()。 10 INT wordsNum = words.length。 11 一覧<整数> RES = 新しい ArrayListを<> (); 12 13の ために(int型私= 0; iはs.lengthを(<) - LEN * wordsNum + 1; iは++ ){ 14 のHashMap <文字列、整数> seenWords = 新規 HashMapの<> (); 15 int型 J = 0 ; 16 一方(J < wordsNum){ 17 文字単語= s.substring(iは+(J + 1)*、j個の*のLENを+ LEN)。 18 であれば(count.containsKey(ワード)){ 19 seenWords.put(ワード、seenWords.getOrDefault(ワード0)+ 1 )。 20 もし(seenWords.get(ワード)> count.get(ワード)) 21 ブレーク。 22 23 } 他に 24 ブレーク。 25 J ++ ; 26 } 27 であれば(J == wordsNum){ 28 res.add(I)。 29 } 30 } 31の リターンRES。 32 } 33 }