438. 找到字串中所有字母異位詞
class Solution {
public List<Integer> findAnagrams(String s, String p) {
char[] arrS = s.toCharArray();
char[] arrP = p.toCharArray();
// 接收最後返回的結果
List<Integer> ans = new ArrayList<>();
// 定義一個 needs 陣列來看 arrP 中包含元素的個數
int[] needs = new int[26];
// 定義一個 window 陣列來看滑動視窗中是否有 arrP 中的元素,並記錄出現的個數
int[] window = new int[26];
// 先將 arrP 中的元素儲存到 needs 陣列中
for (int i = 0; i < arrP.length; i++) {
needs[arrP[i] - 'a'] += 1;
}
// 定義滑動視窗的兩端
int left = 0;
int right = 0;
// 右視窗開始不斷向右移動
while (right < arrS.length) {
int curR = arrS[right] - 'a';
right++;
// 將右視窗當前訪問到的元素 curR 個數加 1
window[curR] += 1;
// 當 window 陣列中 curR 比 needs 陣列中對應元素的個數要多的時候就該移動左視窗指標
while (window[curR] > needs[curR]) {
int curL = arrS[left] - 'a';
left++;
// 將左視窗當前訪問到的元素 curL 個數減 1
window[curL] -= 1;
}
// 這裡將所有符合要求的左視窗索引放入到了接收結果的 List 中
if (right - left == arrP.length) {
ans.add(left);
}
}
return ans;
}
}
相關文章
- 438. 找到字串中所有字母異位詞(暴力,雙指標)2字串指標
- 有效的字母異位詞
- leedcode-有效的字母異位詞
- 【leetcode 49】【字母異位詞分組】LeetCode
- LeetCode初級演算法之字串:242 有效的字母異位詞LeetCode演算法字串
- LeetCode 49. 字母異位詞分組LeetCode
- C語言重構【242】有效的字母異位詞C語言
- LeetCode 242 有效的字母異位詞(JAVA)LeetCodeJava
- Leetcode——242:有效字母的異位詞LeetCode
- Q23 LeetCode242 字母異位詞LeetCode
- 《雜湊表》242. 有效的字母異位詞《leetcode》LeetCode
- Q25 LeetCode49 字母異位詞分組LeetCode
- leetcode【每日一題】242. 有效的字母異位詞 javaLeetCode每日一題Java
- 讓我們一起啃演算法----字母異位詞分組演算法
- C語言:將字串中所有小寫字母轉為大寫字母C語言字串
- 0506C語言練習:字串A中刪除字串B中所有相同字母等C語言字串
- 013--Hbuilder--js--將字串中所有大寫字母改成小寫,所有小寫字母改成大寫UIJS字串
- Python將所有的英文單詞首字母變成大寫Python
- Leetcode_49_字母異位分組_mapLeetCode
- 13:將字串中的小寫字母轉換成大寫字母字串
- 字串*-全字母句字串
- 字串-保留字母字串
- 將字串中的每個單詞順序進行顛倒,單詞還是原來的單詞,字母順序不發生變化字串
- 1138:將字串中的小寫字母轉換成大寫字母(C C++)字串C++
- 448. 找到所有陣列中消失的數字陣列
- 獲取字串中的所有漢字字串
- 如何清除字串中的所有空格字串
- [CareerCup] 11.2 Sort Anagrams Array 異位詞陣列排序陣列排序
- C++實現一個將字串中所有字母轉換為大寫的方法C++字串
- LeetCode-345-反轉字串中的母音字母LeetCode字串
- 淦448. 找到所有陣列中消失的數字陣列
- 11-09字串中的單詞數字串
- js將陣列中的字串執行字母表排序JS陣列字串排序
- 力扣448. 找到所有陣列中消失的數字力扣陣列
- 從字串A中刪除字串B中存在的字母(不區分大小寫)C語言實現字串C語言
- js替換字串中的所有指定內容JS字串
- Day 6| 242.有效的字母異位詞 、349. 兩個陣列的交集 、 202. 快樂數 、 1. 兩數之和陣列
- LeetCode-448-找到所有陣列中消失的數字LeetCode陣列