Medium
You are given a 0-indexed binary string s and two integers minJump and maxJump. In the beginning, you are standing at index 0, which is equal to '0'. You can move from index i to index j if the following conditions are fulfilled:
i + minJump <= j <= min(i + maxJump, s.length - 1), ands[j] == '0'.Return true if you can reach index s.length - 1 in s, or false otherwise.
Example 1:
Input: s = “011010”, minJump = 2, maxJump = 3
Output: true
Explanation:
In the first step, move from index 0 to index 3.
In the second step, move from index 3 to index 5.
Example 2:
Input: s = “01101110”, minJump = 2, maxJump = 3
Output: false
Constraints:
2 <= s.length <= 105s[i] is either '0' or '1'.s[0] == '0'1 <= minJump <= maxJump < s.lengthpublic class Solution {
public boolean canReach(String s, int minJump, int maxJump) {
int i;
int j = 0;
int n = s.length();
char[] li = s.toCharArray();
for (i = 0; i < n; i++) {
// o == ok
if (i == 0 || li[i] == 'o') {
for (j = Math.max(j, i + minJump); j < Math.min(n, i + maxJump + 1); j++) {
if (li[j] == '0') {
li[j] = 'o';
}
}
}
if (j > n) {
break;
}
}
return li[n - 1] == 'o';
}
}