constint N =1e5+10;int s[N], f[N];
class Solution {
public:
bool canReach(string str,int a,int b){memset(s,0,sizeof s);memset(f,0,sizeof f);
s[1]=1;
f[1]=1;int n = str.size();for(int i =2; i <= n; i ++){if(str[i -1]=='0'&& i - a >=1){// i - a >= 1确保存在区间能跳到当前位置i,即区间右端点存在,否则没法用前缀和int l =max(1, i - b), r = i - a;if(s[r]- s[l -1]>0) f[i]=1;}
s[i]= s[i -1]+ f[i];}return f[n]==1;}
```