题目连接:https://leetcode-cn.com/problems/permutation-in-string/
思路:
因为所有字符都是小写,可以用数组保存 s1 串 每个字符出现的次数。
然后在 s2 串中去找出长度为 s1.length() 的子串,再去判断这些子串有没有和 s1 是一样长度的。
代码
class Solution {
public boolean checkInclusion(String s1, String s2) {
if(s1.length() > s2.length())
return false;
int s1map[] = new int[26];
int s2map[] = new int[26];
for(int i = 0; i < s1.length(); i++){
s1map[s1.charAt(i) - 'a']++;
s2map[s2.charAt(i) - 'a']++;
}
for(int i = 0; i < s2.length() - s1.length(); i++){
if(check(s1map,s2map) == true)
return true;
s2map[s2.charAt(i) - 'a']--;
s2map[s2.charAt(i + s1.length()) - 'a']++;
}
return check(s1map,s2map);
}
public boolean check(int s1map[], int s2map[]){
for(int i = 0; i < 26; i++){
if(s1map[i] != s2map[i])
return false;
}
return true;
}
}
来源:CSDN
作者:lxx5327
链接:https://blog.csdn.net/lxx5327/article/details/103487826