題目鏈結
【題解】
開個字典樹記錄下所有的單詞。
然後注意題目的已知條件
每個單詞的長度都是一樣的。
這就說明不會出現某個字串是另外乙個字串的字首的情況(除非相同).
所以可以貪心地匹配(遇到什麼字元就在字典樹裡面沿著邊從根往下走就好).
假設給的單詞的個數為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...