LeetCode717 1位元與2位元字元

2021-09-08 17:34:02 字數 1066 閱讀 9523

有兩種特殊字元。第一種字元可以用一位元0來表示。第二種字元可以用兩位元(1011)來表示。

現給乙個由若干位元組成的字串。問最後乙個字元是否必定為乙個一位元字元。給定的字串總是由0結束。

示例 1:

輸入: 

bits = [1, 0, 0]

輸出: true

解釋:

唯一的編碼方式是乙個兩位元字元和乙個一位元字元。所以最後乙個字元是一位元字元。

示例 2:

輸入: 

bits = [1, 1, 1, 0]

輸出: false

解釋:

唯一的編碼方式是兩位元字元和兩位元字元。所以最後乙個字元不是一位元字元。

注意:

解析:該題目不是簡單的判斷倒數兩位是否有1,而是需要從頭到尾進行判斷。如果整個陣列的長度為1,則返回true,否則,要遍歷整個陣列,如果i位置的值為1,則它必然與後乙個數值共同組成乙個2位元,此時下標移動兩個位置;如果是0,則它自己組成乙個1位元,此時下標移動乙個位置。一直遍歷到倒數第二位,如果索引i指到倒數第三位,並且倒數第三位為1,則此時i向後移動兩位,到達倒數第一位,則此時必定是乙個1位元字元。如果i直到倒數第二位,並且倒數第二位是1,則該數字必須和最後乙個數字共同組成乙個2位元字元。

**:

bool isone*****aracter(vector& bits) 

if (i == size - 1)//如果最終下標指向最後乙個數字,則表示前邊字元剛好組成相應位元,只剩乙個0

return true;

else

return false;

}

他山之石:

//找倒數第二位開始的連續1的個數,如果是奇數返回false

bool isone*****aracter(vector& bits)

leetcode717 1位元與2位元字元

有兩種特殊字元。第一種字元可以用一位元0來表示。第二種字元可以用兩位元 10或11 來表示。現給乙個由若干位元組成的字串。問最後乙個字元是否必定為乙個一位元字元。給定的字串總是由0結束。示例 1 輸入 bits 1,0,0 輸出 true解釋 唯一的編碼方式是乙個兩位元字元和乙個一位元字元。所以最後...

Leetcode 717 1位元與2位元字元

有兩種特殊字元。第一種字元可以用一位元0來表示。第二種字元可以用兩位元 10或11 來表示。現給乙個由若干位元組成的字串。問最後乙個字元是否必定為乙個一位元字元。給定的字串總是由0結束。示例 1 輸入 bits 1,0,0 輸出 true解釋 唯一的編碼方式是乙個兩位元字元和乙個一位元字元。所以最後...

leetcode717 1位元與2位元字元

有兩種特殊字元。第一種字元可以用一位元0來表示。第二種字元可以用兩位元 10 或 11 來表示。現給乙個由若干位元組成的字串。問最後乙個字元是否必定為乙個一位元字元。給定的字串總是由0結束。示例 1 輸入 bits 1,0,0 輸出 true 解釋 唯一的編碼方式是乙個兩位元字元和乙個一位元字元。所...