题目链接:393. UTF-8 编码验证
按照规则判断即可。
class Solution:
@staticmethod
def sizeof(datum: int) -> int:
if 0 <= datum <= 127:
return 1
elif 128 <= datum <= 191:
return -1 # is post-sequence
elif 192 <= datum <= 223:
return 2
elif 224 <= datum <= 239:
return 3
elif 240 <= datum <= 247:
return 4
else:
raise ValueError("malformed data")
def validUtf8(self, data: List[int]) -> bool:
try:
i = 0
while i < len(data):
s = self.sizeof(data[i])
if s > 0:
for j in range(i + 1, i + s):
if j >= len(data) or self.sizeof(data[j]) != -1:
return False
i += s
else:
return False
return i == len(data)
except ValueError:
return False