class Solution6 {
/*
438. 找到字符串中所有字母异位词
给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。
异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。
*/
public List<Integer> findAnagrams(String s, String p) {
int slen = s.length();
int plen = p.length();
int[] sArray = new int[26];
int[] pArray = new int[26];
List<Integer> asn = new ArrayList<>();
if(slen < plen){
return asn;
}
for(int i=0;i<plen;i++){
++sArray[s.charAt(i)-'a'];
++pArray[p.charAt(i)-'a'];
}
if(Arrays.equals(sArray,pArray)){
asn.add(0);
}
for(int i=0;i<slen-plen;i++){
--sArray[s.charAt(i)-'a'];
++sArray[s.charAt(i+plen)-'a'];
if(Arrays.equals(sArray,pArray)){
asn.add(i+1);
}
}
return asn;
}
}
【LeetCode】438. 找到字符串中所有字母异位词
最新推荐文章于 2024-09-13 16:12:21 发布