LeetCode-717. 1-bit and 2-bit Characters
阿新 • • 發佈:2018-12-25
We have two special characters. The first character can be represented by one bit 0
. The second character can be represented by two bits (10
or 11
).
Now given a string represented by several bits. Return whether the last character must be a one-bit character or not. The given string will always end with a zero.
Example 1:
Input: bits = [1, 0, 0] Output: True Explanation: The only way to decode it is two-bit character and one-bit character. So the last character is one-bit character.
Example 2:
Input: bits = [1, 1, 1, 0] Output: False Explanation: The only way to decode it is two-bit character and two-bit character. So the last character is NOT one-bit character.
Note:
1 <= len(bits) <= 1000
.
bits[i]
is always 0
or 1
.
1.從頭掃描整個整陣列,0可以單獨一個字元表示,1必須兩個字元表示。
class Solution { public boolean isOneBitCharacter(int[] bits) { int lens=bits.length,i; for(i=0;i<lens-1;) { if(bits[i]==0)i++; if(bits[i]==1)i+=2; } return i==lens-1; } }
2.從檢查陣列末尾
如果是00則肯定true,因為沒有兩個字元可以表示00;
如果是10則統計連續的1的個數,連續1的個數為奇數則為false 個數為偶數則為true。
class Solution {
public boolean isOneBitCharacter(int[] bits) {
int ones = 0;
//Starting from one but last, as last one is always 0.
for (int i = bits.length - 2; i >= 0 && bits[i] != 0 ; i--) {
ones++;
}
if (ones % 2 > 0) return false;
return true;
}
}