描述:給定乙個字串 s 和一些長度相同的單詞 words。在 s 中找出可以恰好串聯 words 中所有單詞的子串的起始位置。
注意子串要與 words 中的單詞完全匹配,中間不能有其他字元,但不需要考慮 words 中單詞串聯的順序。
示例 1:
輸入:s = 「barfoothefoobarman」,
words = [「foo」,「bar」]
輸出: [0,9]
解釋: 從索引 0 和 9 開始的子串分別是 「barfoor」 和 「foobar」 。
輸出的順序不重要, [9,0] 也是有效答案。
示例 2:
輸入:s = 「wordgoodstudentgoodword」,
words = [「word」,「student」]
輸出:
思路先統計words中每個字串出現的次數,存到wordsmap中;
然後根據words中的字串的長度是一樣的特點,迴圈遍歷s;
每次迴圈:初始化新的seenmap,擷取s中的字串:
如果字串在words中,則把該字串及其出現的次數,存放到seenmap;並檢查該字串出現在seenmap中的次數是否大於wordsmap中的次數。
如果字串不在words中,則跳出迴圈
public class findsubstring
int slen=s.length();
int wlen=words.length;
int len=words[0].length();
//先統計words中每個字串出現的次數
hashmapwordsmap=new hashmap<>();
for (int i=0;iseenmap=new hashmap<>();
int j=0;
while (jwordsmap.getordefault(str,0))
}else
//注意這裡
j++;
}if(j==wlen)
}return result;
}}
Leetcode30與所有單詞相關聯的字串。
題目 定乙個字串 s 和一些長度相同的單詞 words。在s 中找出可以恰好串聯 words 中所有單詞的子串的起始位置。注意子串要與 words 中的單詞完全匹配,中間不能有其他字元,但不需要考慮 words 中單詞串聯的順序。public static listfindsubstring str...
Leetcode 30 與所有單詞相關聯的字串
題目描述 給定乙個字串 s 和一些長度相同的單詞 words。在 s 中找出可以恰好串聯 words 中所有單詞的子串的起始位置。注意子串要與 words 中的單詞完全匹配,中間不能有其他字元,但不需要考慮 words 中單詞串聯的順序。示例 1 輸入 s barfoothefoobarman wo...
leetcode30 與所有單詞相關聯的字串
leetcode.0030 與所有單詞相關聯的字串 給定乙個字串 s 和一些長度相同的單詞 words。在 s 中找出可以恰好串聯 words 中所有單詞的子串的起始位置。注意子串要與 words 中的單詞完全匹配,中間不能有其他字元,但不需要考慮 words 中單詞串聯的順序。示例1 輸入 s b...