好久沒刷題了。今天再刷題記錄下:
給定乙個字串 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 輸出...