-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path717-1bitAnd2bitCharacters.go
More file actions
60 lines (51 loc) · 2 KB
/
717-1bitAnd2bitCharacters.go
File metadata and controls
60 lines (51 loc) · 2 KB
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package main
// 717. 1-bit and 2-bit Characters
// 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).
// Given a binary array bits that ends with 0, return true if the last character must be a one-bit character.
// 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.
// Constraints:
// 1 <= bits.length <= 1000
// bits[i] is either 0 or 1.
import "fmt"
func isOneBitCharacter(bits []int) bool {
i, n := 0, len(bits)
for i < n - 1 {
if bits[i] == 1 {// 10, 11 占两个
i += 2
} else { // 0 // 占1个
i++
}
}
return i == n - 1
}
func main() {
// 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. (1, 0), (0)
fmt.Println(isOneBitCharacter([]int{1,0,0}))
// 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. (1, 1), (1, 0)
fmt.Println(isOneBitCharacter([]int{1,1,1,0})) // false
fmt.Println(isOneBitCharacter([]int{0,0,0,0,0,0,0,0,0,0})) // true
fmt.Println(isOneBitCharacter([]int{1,1,1,1,1,1,1,1,1,1})) // false
fmt.Println(isOneBitCharacter([]int{0,0,0,0,0,1,1,1,1,1})) // true
fmt.Println(isOneBitCharacter([]int{1,1,1,1,1,0,0,0,0,0})) // true
fmt.Println(isOneBitCharacter([]int{0,1,0,1,0,1,0,1,0,1})) // true
fmt.Println(isOneBitCharacter([]int{1,0,1,0,1,0,1,0,1,0})) // false
}