一.题目描述
给你两个字符串?s1 ?和?s2 ?,写一个函数来判断?s2 ?是否包含?s1 ?的排列。
换句话说,s1 ?的排列之一是?s2 ?的?子串?。
https://leetcode-cn.com/problems/permutation-in-string/
二.代码
public boolean checkInclusion(String s1, String s2) {
int n = s1.length(), m = s2.length();
if (n > m) {
return false;
}
int[] cnt1 = new int[26];
int[] cnt2 = new int[26];
char[] charArray1 = s1.toCharArray();
char[] charArray2 = s2.toCharArray();
for (int i = 0; i < n; i++) {
cnt1[charArray1[i] - 'a']++;
cnt2[charArray2[i] - 'a']++;
}
if (Arrays.equals(cnt1, cnt2)) {
return true;
}
for (int i = n; i < m; i++) {
cnt2[charArray2[i] - 'a']++;
cnt2[charArray2[i - n] - 'a']--;
if (Arrays.equals(cnt1, cnt2)) {
return true;
}
}
return false;
}
|