leetcode 717 1位元與2位元字元

2021-09-17 08:38:19 字數 770 閱讀 7543

提交記錄

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

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

示例 1:

輸入:bits = [1, 0, 0]

輸出: true

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

示例 2:

輸入:bits = [1, 1, 1, 0]

輸出: false

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

注意:1 <= len(bits) <= 1000.

bits[i] 總是0 或 1.

看到這個題就聯想到霍夫曼編碼,裡面有乙個性質是不會存在某乙個編碼是另乙個編碼的字首,也就是說給定的bits能夠都被無歧義的解碼,只有唯一的編碼方式。其實這題就是乙個霍夫曼編碼的殘疾版。

回到問題,我們遇到0,這就是乙個編碼,前進一步,遇到1,下乙個不管遇到的是0還是1都是合法的編碼形式。所以前進兩步。用乙個指標p表示我們當前的位置,開始為0,一直走,直到p>=n-1,如果最後是乙個一位元字元,那p位於n-1位置。如果最後是乙個兩位元字元p位於n位置。

class

solution

return p==n-1;

}};

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 解釋 唯一的編碼方式是乙個兩位元字元和乙個一位元字元。所以最...