我認為這道題要做出來是不難的,主要是怎麼使他的效率變高
可惜我僅僅只是將這道題做出來,深感慚愧
我的思路可以算是滑動窗體吧
因為words中的每個單詞的長度相同,所以我們已知這個長度
以這個長度作為我們窗體的長度,在s中尋找是否有在words中存在的單詞
有的話,刪除words中存在的這個單詞,繼續往後找,如果中間斷開,則words恢復原樣
這裡,為了方便對words進行操作,我將words轉換為list
請看**:
class solution {
public listfindsubstring(string s, string words) {
listres=new arraylist();
liststr=new arraylist(arrays.aslist(words));
//如果s和words有一樣為空的話,那麼直接返回空列表
if(s.length()==0 || words.length==0) return res;
int n=words[0].length();
for(int i=0;i<=s.length()-n;i++){
//每次迴圈重新配置temp
listtemp=new arraylist();
temp.addall(str);
if(temp.contains(s.substring(i,i+n))){
int j=i+n;
//當s後面的字串長度小於words中所有單詞的總長度時,直接退出迴圈
if(s.length()-i執行結果如下:
LeetCode之串聯所有單詞的子串 30
給定乙個字串 s 和一些長度相同的單詞 words。找出 s 中恰好可以由 words 中所有單詞串聯形成的子串的起始位置。注意子串要與 words 中的單詞完全匹配,中間不能有其他字元,但不需要考慮 words 中單詞串聯的順序。示例 1 輸入 s barfoothefoobarman words...
30 串聯所有單詞的子串 leetcode
好久沒刷題了。今天再刷題記錄下 給定乙個字串 s 和一些長度相同的單詞 words。找出 s 中恰好可以由 words 中所有單詞串聯形成的子串的起始位置。注意子串要與 words 中的單詞完全匹配,中間不能有其他字元,但不需要考慮 words 中單詞串聯的順序。示例 1 輸入 s barfooth...
leetcode演算法 30 串聯所有單詞的子串
雜記所有題目源 git位址 題目給定乙個字串 s 和一些長度相同的單詞 words。找出 s 中恰好可以由 words 中所有單詞串聯形成的子串的起始位置。注意子串要與 words 中的單詞完全匹配,中間不能有其他字元,但不需要考慮 words 中單詞串聯的順序。示例 1 輸入 s barfooth...