O(N) time , O(N) space , using PREFIX SUMS EASY solution.
\n\n\n\nbool canReach (string s, int l , int r){\n\n\n    int st = 0 ; \n\n    int n = s.size(); \n\n\n    vector<int> pref (n + 1);\n\n    pref[0]  = 1; \n\n  
\n\n```\n\nbool canReach (string s, int l , int r){\n\n\n    int st = 0 ; \n\n    int n = s.size(); \n\n\n    vector<int> pref (n + 1);\n\n    pref[0]  = 1; \n\n    pref[1] = -1; \n\n    for(int i = 0; i  < n ; ++i){\n        if (i){\n            pref[i] += pref[i - 1]; \n        }\n\n        if (s[i] == \'0\' && pref[i]){\n            int L = i + l , R = i + r; \n\n            if (L >= n){\n                continue; \n            }\n            pref[L] += 1; \n            pref [min (n - 1 , R) + 1 ] -= 1; \n        }\n\n    }   \n\n    return pref[n -1]  && (s[n - 1] == \'0\');  \n\n}\n\n\n\n```
[]