判断字符串中存在异位词

LCR 014. 字符串的排列

给定两个字符串 s1s2,写一个函数来判断 s2 是否包含 s1 的某个变位词。

换句话说,第一个字符串的排列之一是第二个字符串的 子串

示例 1:

1
2
3
输入: s1 = "ab" s2 = "eidbaooo"
输出: True
解释: s2 包含 s1 的排列之一 ("ba").

示例 2:

1
2
输入: s1= "ab" s2 = "eidboaoo"
输出: False

提示:

  • 1 <= s1.length, s2.length <= 104
  • s1s2 仅包含小写字母

438. 找到字符串中所有字母异位词 - 力扣(LeetCode)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Solution {
public boolean checkInclusion(String s1, String s2) {
int len1 = s1.length();
int len2 = s2.length();
int[] hashmap = new int[26];
for(int i = 0; i < len1; i++){
hashmap[s1.charAt(i) - 'a'] ++;
}
int left = 0;
int right = 0;
while(right < len2){
char c = s2.charAt(right);
hashmap[c - 'a'] --;
while(hashmap[c - 'a'] < 0){
char lchar = s2.charAt(left);
hashmap[lchar - 'a'] ++;
left ++;
}
if(right - left + 1 == len1){
return true;
}
right ++;
}
return false;

}
}

判断字符串中存在异位词
http://example.com/2023/05/23/算法/滑动窗口,双指针/6. 判断字符串存在异位词/
作者
PALE13
发布于
2023年5月23日
许可协议