我們看到這題, 倒讚很多, 我們研究一下他的題目
他說明了 數組 只有兩種值(我們稱A, B)A 可以用 0 表示
B可以用 10, 11表示
現在給你一個陣列, 這個陣列是否能表示讓A當結尾
其實這題需要下去分析, 首先我們了解到, size0的話一定不行, 結尾是1的話也一定不行, 這兩種case我們可以直接回傳false
接著我們掃過一輪, 倘若值為0, index 加一, 倘若值為1, index 加二,為什麼?
因為若以一為開頭, 不管怎樣後面那個值都一定屬於B
若index可以剛好落在最結尾,最結尾又是0, 我們得知此狀態為true, 反之 就是false
code:
class Solution {
public:
bool isOneBitCharacter(vector<int> &bits) {
int size = bits.size();
if (size == 0 || bits[size - 1] == 1) {
return false;
}
// final is 0
//
for(int i = 0; i < size;){
if(bits[i] == 0){
i++;
}else{
i+=2;
if(i > size -1){
return false;
}
}
}
return true;
}
};