问题描述
给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。
异位词 指字母相同,但排列不同的字符串。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-all-anagrams-in-a-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
问题包含两部分:
1.取子串
2.判断下一个子串是否为当前子串的异位词
问题1可以利用string substr (s, i, n)来取子串
问题2在简单题242. 有效的字母异位词可以做出解答
##具体代码实现
class Solution {
public:
vector<int> findAnagrams(string s, string p) {
int n = p.size();
vector<int> result;
for(int i = 0; i<s.size(); i++){
string substr (s, i, n);
if(isword(p ,substr)){
result.push_back(i);
}
}
return result;
}
bool isword(string s, string t){
int record[26] = {0};
for(auto sword : s){
record[sword-'a']++;
}
for(auto tword : t){
record[tword-'a']--;
}
for(int it : record){
if(it!=0){
return false;
}
}
return true;
}
};