393. UTF-8 Validation
Question
Given an integer array
data
representing the data, return whether it is a valid UTF-8 encoding (i.e. it translates to a sequence of valid UTF-8 encoded characters).A character in UTF8 can be from 1 to 4 bytes long, subjected to the following rules:
- For a 1-byte character, the first bit is a
0
, followed by its Unicode code.- For an n-bytes character, the first
n
bits are all one’s, then + 1
bit is0
, followed byn - 1
bytes with the most significant2
bits being10
.
x
denotes a bit in the binary form of a byte that may be either0
or1
.**Note: **The input is an array of integers. Only the least significant 8 bits of each integer is used to store the data. This means each integer represents only 1 byte of data.
Solution
位运算,循环更新UTF头部的位置start。
getByte()方法用来计算位数。
check()方法用来检查从start+1开始直到位数结束是否二进制位数以10开头。
isStartWith10()方法使用掩码判断二进制是否以10开头。
Code
1 | class Solution { |
393. UTF-8 Validation