https://leetcode-cn.com/problems/1-bit-and-2-bit-characters/
这个逻辑写的太赞了
简化
class Solution {
//0,10,11 可以转化
//1,01,00,这些通过读题知,不可能1,01结尾
//bits[i] = 1->i+=2
// 0->i++
public boolean isOneBitCharacter(int[] bits) {
int n = bits.length;
int i=0;
while(i<n){
if(i == n-1){ //如果i是最后一位,那么直接返回
return true;
}
if(bits[i]==1){
i+=2;
}else{
i+=1;
}
}
return false;//如果遍历到最后第二位,返回假
}
}
简化版本
class Solution {
public boolean isOneBitCharacter(int[] bits) {
int i=0;
int n = bits.length;
while(i<n-1){
if(bits[i]==1){
i+=2;
}
else{
i+=1;
}
}
return i == n-1;
}
}
考察点:滑动窗口,i++,i+=2的逻辑,以及最后简化判断的逻辑
个人理解,滑动窗口本质就是遍历+判断