leetcode 30 串聯所有單詞的子串

2021-10-01 07:53:34 字數 1099 閱讀 8448

先看一下我的戰況,看看那三個七分鐘…,沒辦法著急了受,其實大部分時間就是花在了調邊界條件上了。

然後說一下思路吧:其實就是使用空間換取時間,但是我的時間沒有很低,反而空間比我想象的要低一些。步驟如下:

我們把words中的所有單詞放到雜湊表中,其中的鍵為每個單詞,值為單詞的次數

然後我們遍歷這個字串s,而且每次遍歷的子串長度都應該和words陣列中所有字串長度的總和一樣,即words.length * words[0].length()

然後我們對子串中每個長度為words[0].length的單詞進行檢查,看看雜湊表裡面是否有它,或者它是不是已經出現過了:如果沒有則直接break,這個子串不符合;如果有而且對應的出現次數大於0,則將出現次數減1。

一直到最後如果子串中的每個單詞都符合,那麼就將這個子串的開始索引放到結果中。否則檢查下乙個子串。

**如下:

public list

findsubstring

(string s, string[

] words)

else}if

(index == tail)

head++

;//此處子串的前進步長為1

tail++

;reset

(flag, words)

;//每次遍歷完乙個子串,都要重置訪問標誌

}return result;

}private

void

reset

(map

flag, string[

] words)

}for

(int i =

0; i < words.length;

++i)

if(flag.

containskey

(words[i]))

else

}

leetcode 30 串聯所有單詞的子串

leetcode題目鏈結 題目要求 找出 由words陣列組成的字串 每乙個元素word等長 在字元轉s中的位置 陣列words生成的字典dic2 遍歷字串,從頭開始判斷長度為lenwords的字串 生成的字典dic1 如果dic1 與 dic2 相同,說明找到 def findsubstring ...

leetcode 30 串聯所有單詞的子串

給定乙個字串 s 和一些長度相同的單詞 words。找出 s 中恰好可以由 words 中所有單詞串聯形成的子串的起始位置。注意子串要與 words 中的單詞完全匹配,中間不能有其他字元,但不需要考慮 words 中單詞串聯的順序。示例 1 輸入 s barfoothefoobarman words...

leetcode 30 串聯所有單詞的子串

題目 給定乙個字串 s 和一些長度相同的單詞 words。找出 s 中恰好可以由 words 中所有單詞串聯形成的子串的起始位置。注意子串要與 words 中的單詞完全匹配,中間不能有其他字元,但不需要考慮 words 中單詞串聯的順序。示例 1 輸入 s barfoothefoobarman wo...