Python easy to read and understand | DFS,BFS
DFS (TLE):\n\nclass Solution:\n    def dfs(self, s, i):\n        if i < 0 or i >= len(s) or s[i] != \'0\':\n            return\n        if i == len(s)-1:\n     
* DFS (TLE):\n```\nclass Solution:\n    def dfs(self, s, i):\n        if i < 0 or i >= len(s) or s[i] != \'0\':\n            return\n        if i == len(s)-1:\n            self.ans = True\n            return\n        for jump in range(self.low, self.high+1):\n            self.dfs(s, i+jump)\n        \n    def canReach(self, s: str, minJump: int, maxJump: int) -> bool:\n        self.low = minJump\n        self.high = maxJump\n        self.ans = False\n        self.dfs(s, 0)\n        return self.ans\n```\n* BFS(accepted):\n```\nclass Solution:\n    def canReach(self, s: str, minJump: int, maxJump: int) -> bool:\n        q = [0]\n        far = 0\n        while q:\n            ind = q.pop(0)\n            if ind == len(s)-1:\n                return True\n            low = max(far+1, ind+minJump)\n            high = min(len(s)-1, ind+maxJump)\n            for jump in range(low, high+1):\n                if s[jump] == \'0\':\n                    q.append(jump)\n            far = ind+maxJump\n        return False\n```
['Depth-First Search', 'Breadth-First Search', 'Python', 'Python3']