leetcode 567 字串的排列

2022-06-10 10:30:10 字數 1015 閱讀 1731

目錄你的鼓勵也是我創作的動力

給定兩個字串 s1 和 s2,寫乙個函式來判斷 s2 是否包含 s1 的排列。

換句話說,第乙個字串的排列之一是第二個字串的子串。

示例1:

輸入: s1 = "ab" s2 = "eidbaooo"

輸出: true

解釋: s2 包含 s1 的排列之一 ("ba").

示例2:

輸入: s1= "ab" s2 = "eidboaoo"

輸出: false

注意:輸入的字串只包含小寫字母

兩個字串的長度都在 [1, 10,000] 之間

對於類似子串、子陣列題目,我們幾乎都可以採用滑動視窗的思路來解決;

需要注意的是:輸入的 s1 是可以包含重複字元,所以我們統計字元出現的個數;

統計我們需要的字元:mapneed = new hashmap<>();

定義我們的滑動視窗:mapwindow = new hashmap<>();

準備開始遍歷s2,定義左右指標,left、right;

使用valid記錄遍歷過程中的有效值是否跟need的大小size一致,如果一致,返回true

right指標右移時,統計valid有效值;left右移時,減少valid有效值;

end

public  boolean checkinclusion(string s1, string s2) 

int left = 0, right = 0;

int valid = 0;

while(right < s2.length())

}if(valid == need.size())

while(right - left >= s1.length())

window.put(d,window.getordefault(d,0) - 1);}}

}return false;

}

打賞位址

LeetCode 567 字串的排列

給定兩個字串 s1 和 s2,寫乙個函式來判斷 s2 是否包含 s1 的排列。換句話說,第乙個字串的排列之一是第二個字串的子串。示例1 輸入 s1 ab s2 eidbaooo 輸出 true 解釋 s2 包含 s1 的排列之一 ba 示例2 輸入 s1 ab s2 eidboaoo 輸出 fals...

leetcode 567 字串的排列

給定兩個字串 s1 和 s2,寫乙個函式來判斷 s2 是否包含 s1 的排列。換句話說,第乙個字串的排列之一是第二個字串的子串。示例1 輸入 s1 ab s2 eidbaooo 輸出 true 解釋 s2 包含 s1 的排列之一 ba 示例2 輸入 s1 ab s2 eidboaoo 輸出 fals...

LeetCode 567 字串的排列

給定兩個字串 s1 和 s2,寫乙個函式來判斷 s2 是否包含 s1 的排列。換句話說,第乙個字串的排列之一是第二個字串的子串。示例1 輸入 s1 ab s2 eidbaooo 輸出 true 解釋 s2 包含 s1 的排列之一 ba 示例2 輸入 s1 ab s2 eidboaoo 輸出 fals...