LeetCode 30 串聯所有單詞的子串

2021-09-29 14:17:12 字數 841 閱讀 1379

題目鏈結

【題解】

開個字典樹記錄下所有的單詞。

然後注意題目的已知條件

每個單詞的長度都是一樣的。

這就說明不會出現某個字串是另外乙個字串的字首的情況(除非相同).

所以可以貪心地匹配(遇到什麼字元就在字典樹裡面沿著邊從根往下走就好).

假設給的單詞的個數為len.(每個單詞的長度都是l)

顯然從每個位置開始都要匹配len次。而且每次都要匹配l個字元。

然後因為可能會出現乙個單詞出現多次的情況。

那麼你得記錄一下之前某個單詞用了多少次。

【**】

class solution 

p = tree[p][ts[j]-'a'];

}tag[p]++;

}int l = words[0].size();

int len = s.size();

for (int i = 0;i < len;i++)

if (tree[p][s[k]-'a']==0)

p = tree[p][s[k]-'a'];

}if (!ok) break;

if (tag[p]==0) //如果字典裡沒有這個單詞就停止

if (used[p]==0) visits.push_back(p);//記錄一下哪些位置用到了,之後清0用

used[p]++;

if (used[p]>tag[p])

}for (int x:visits) used[x]=0;

if (ok) ans.push_back(i);

}return ans;

}};

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