ID | Title | Difficulty | |
---|---|---|---|
Loading... |
567. Permutation in String
Medium
LeetCode
Hash Table, Two Pointers, String, Sliding Window
Problem
Given two strings s1 and s2, return true if s2 contains the permutation of s1.
In other words, one of s1’s permutations is the substring of s2.
Example 1:
Input: s1 = "ab", s2 = "eidbaooo"
Output: true
Explanation: s2 contains one permutation of s1 ("ba").
Example 2:
Input: s1 = "ab", s2 = "eidboaoo"
Output: false
Constraints:
- $1 <= s1.length, s2.length <= 10^4$
- s1 and s2 consist of lowercase English letters.
Code
438. Find All Anagrams in a String
class Solution {
public boolean checkInclusion(String s1, String s2) {
if (s1.length() > s2.length()) return false;
int[] dict1 = new int[26];
int[] dict2 = new int[26];
for (int i = 0; i < s1.length(); i++) {
dict1[s1.charAt(i) - 'a']++;
dict2[s2.charAt(i) - 'a']++;
}
if (helper(dict1, dict2)) return true;
for (int i = 1; i <= s2.length() - s1.length(); i++) {
dict2[s2.charAt(i - 1) - 'a']--;
dict2[s2.charAt(i + s1.length() - 1) - 'a']++;
if (helper(dict1, dict2)) return true;
}
return false;
}
public boolean helper(int[] dict1, int[] dict2) {
for (int i = 0; i < 26; i++) {
if (dict1[i] != dict2[i]) return false;
}
return true;
}
}
class Solution {
public boolean checkInclusion(String s1, String s2) {
if (s1.length() > s2.length()) return false;
int[] dict1 = new int[26];
int[] dict2 = new int[26];
for (int i = 0; i < s1.length(); i++) {
dict1[s1.charAt(i) - 'a']++;
dict2[s2.charAt(i) - 'a']++;
}
int count = 0;
for (int i = 0; i < 26; i++) {
if (dict1[i] == dict2[i])
count++;
}
if(count == 26) return true;
for (int i = 1; i <= s2.length() - s1.length(); i++) {
int left = s2.charAt(i - 1) - 'a';
int right = s2.charAt(i + s1.length() - 1) - 'a';
dict2[right]++;
if (dict2[right] == dict1[right]) {
count++;
} else if (dict2[right] == dict1[right] + 1) {
count--;
}
dict2[left]--;
if (dict2[left] == dict1[left]) {
count++;
} else if (dict2[left] == dict1[left] - 1) {
count--;
}
if (count == 26) return true;
}
return false;
}
}
按 <- 键看上一题!
566. Reshape the Matrix
按 -> 键看下一题!
569. Median Employee Salary