题目:
分析:
一道很简单的题,各种细节错误层出不穷。看完就有思路的题竟然提交了四次。
双针针是为了防止:s1=‘abcd’
s2=“abcabcabcabcabcabcabcabcabcabcabcabcabcabcd
防止时间复杂度退化到o(n2)
代码:
class Solution {
public:
bool checkInclusion(string s1, string s2) {
map<char,int> m;
for(int i=0;i<s1.size();i++) m[s1[i]]++;
int a=0;
if(s1.size()==0) return 1;
while(a<s2.size())
{
if(m[s2[a]]) break;
a++;
}
if(a==s2.size()) return 0;
m[s2[a]]--;
if(s1.size()<=1) return 1;
for(int i=a+1;i<s2.size()&&a+s1.size()<=s2.size();i++)
{
//cout<<a<<endl;
if(m[s2[i]])
{
m[s2[i]]--;
if(i-a+1==s1.size()) return 1;
}
else{
while(1)
{
m[s2[a]]++;
a++;
if(m[s2[i]]) {
m[s2[i]]--;
break;
}
if(a==1+i)
{
while(a<s2.size())
{
if(m[s2[a]]) break;
a++;
}
i=a;
if(a==s2.size()) return 0;
}
}
}
}
return 0;
}
};