30 串聯所有單詞的子串 leetcode

2021-10-02 18:32:58 字數 1132 閱讀 9235

好久沒刷題了。今天再刷題記錄下:

給定乙個字串 s 和一些長度相同的單詞 words。找出 s 中恰好可以由 words 中所有單詞串聯形成的子串的起始位置。

注意子串要與 words 中的單詞完全匹配,中間不能有其他字元,但不需要考慮 words 中單詞串聯的順序。

示例 1:

輸入:  s = "barfoothefoobarman",

words = ["foo","bar"]

輸出:[0,9]

解釋:從索引 0 和 9 開始的子串分別是 "barfoo" 和 "foobar" 。

輸出的順序不重要, [9,0] 也是有效答案。

示例 2:

輸入:  s = "wordgoodgoodgoodbestword",

words = ["word","good","best","word"]

輸出:

我的思路:

用map先把words中的單詞和出現次數儲存下來,再用兩個指標l,r,[l,r)代表的就是符合要求的子串。

每次迴圈看subs= substr(r,len)在map中是否為0,可分為以下幾種情況:

if (mapwords[subs] != 0) //下面這個單詞可以加入子串

else

else //l和r不相等,要更新map,並且讓l向前一步,r回來

}

完整**:判斷子串是否已經符合條件那裡寫的不太好。

class solution 

int wlen = words[0].size();

for (int i = 0 ; i < words.size() ; ++i)

mapwords2=mapwords;

int l = 0, r = 0 ,sign = 0;

while(r <= s.size())

}if (sign == 0)

else

string subs = s.substr(r, wlen);

if (mapwords[subs] != 0)

else

else}}

return res;

}};

30 串聯所有單詞的子串

本文參考 一開始的思路是使用遞迴做出words所有結合情況的字典 然後在s中擷取words長度去查字典 結果超時了 超時 class solution for int i 0 i chang i return vectorfindsubstring string s,vector words vec...

30 串聯所有單詞的子串

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

30 串聯所有單詞的子串

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