LeetCode 30 串聯所有單詞的子串

2021-10-21 13:54:04 字數 1464 閱讀 5485

難度:困難。

標籤:雜湊表,雙指標,字串。

我的思路:

使用乙個陣列fla

gflag

flag

來儲存當前子串中是否含有wor

ds

words

word

s中的字串。

遍歷s,判斷以當前字元s[i

]s[i]

s[i]

開頭的子串是不是wor

ds

words

word

s中所有字串的集合,若是則將該字元索引加入res

ul

tresult

result

,並且從i+l

i+li+

l開始遍歷下乙個串,l

ll是wor

ds

words

word

s中每個字串的長度。若不是則遍歷i+1

i+1i+

1。若遇到wor

ds

words

word

s中所有字元都相同([「aa」,「aa」,「aa」]),則將上述l

ll置為1。

這樣的思路得到的結果沒問題,但是超時了。

超時**:

class

solution

}return-1

;}public

: vector<

int>

findsubstring

(string s, vector

& words)}}

vector<

int>

flag

(m);

for(

int i =

0; i < n; i++

)else

break

; k--;}

if(k ==0)

for(

int k =

0; k < flag.

size()

; k++

)flag[k]=0

;}return result;}}

;

在上述**基礎上優化,但是總有小問題,出錯用例如下:

「ababaab」

[「ab」,「ba」,「ba」]

改了一會放棄了優化,看看題解吧。

使用hashmap,這樣足夠快,而且不用考慮亂七八糟的可以優化的條件,使得**可以達到最簡化。以下是使用hashmap解決問題。

正確解法:

class

solution}if

(j == i + word_num * word_len)result.

emplace_back

(i);

m2.clear()

;}return result;}}

;

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...