下图是错误的
下图是正确的
题目是:t剑指 Offer II 015. 字符串中的所有变位词
错误代码如下
class Solution {
public:
vector<int> findAnagrams(string s, string p) {
vector<int> res;
int f[26];
//memset(f,0,sizeof(f));
int sz=s.size(),pz=p.size();
for(int i=0;i<pz;i++) f[p[i]-'a']--;
for(int i=0,j=0;j<sz;j++){
f[s[j]-'a']++;
while(i<=j&&f[s[j]-'a']>0) --f[s[i]-'a'],i++;
if(j-i+1==pz) res.push_back(i);
}
return res;
}
};
解决方法:
将代码中的f数组进行初始化:memset(f,0,sizeof(f));//将f数组全部初始化为0;即可
补充:在查找相同问题回答时还看见一种情况就是定义了全局变量没有初始化。