diff --git a/golang/2202/220220-CN.go b/golang/2202/220220-CN.go new file mode 100644 index 0000000..80d4e52 --- /dev/null +++ b/golang/2202/220220-CN.go @@ -0,0 +1,27 @@ +package main + +import "fmt" + +func isOneBitCharacter(bits []int) bool { + var n = len(bits) + if n == 1 || bits[n-2] == 0 { + return true + } + // try applying codes from front to rear + vis := make([]bool, n) + vis[0] = true + for i := 0; i < n-2; i++ { + if !vis[i] { + continue + } else if bits[i] == 0 { + vis[1+i] = true + } else { // bits[i] == 1 + vis[2+i] = true + } + } + return !vis[n-2] +} + +func main() { + fmt.Println(isOneBitCharacter([]int{1, 1, 1, 0})) +}