717 1 Bit And 2 Bit Characters
717 1 Bit And 2 Bit Characters
1-bit and 2-bit Characters 
We have two special characters:
1
2
The first character can be represented by one bit 0.
The second character can be represented by two bits (10 or 11).
Given a binary array bits that ends with 0, return true if the last character must be a one-bit character.
Example 1:
1
2
3
4
5
6
**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:
1
2
3
4
5
6
**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.
Constraints:
1
2
1 <= bits.length <= 1000
bits[i] is either 0 or 1.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
impl Solution {
pub fn is_one_bit_character(bits: Vec<i32>) -> bool {
fn recurse(i : i32, arr : Vec<i32>) -> bool {
//print!("{}", i);
if i == arr.len() as i32 - 1{
return true;
}
if i > arr.len() as i32 - 1{
return false;
}
if i == arr.len() as i32 - 2 && arr[i as usize] == 1 {
return false;
}
if arr[i as usize] == 0 {
return recurse(i + 1, arr);
} else {
// this was 1 and that means 10 or 11
return recurse(i + 2, arr);
}
}
return recurse(0, bits);
}
}
This post is licensed under CC BY 4.0 by the author.