393.UTF-8编码验证
链接:393.UTF-8编码验证
难度:Medium
标签:位运算、数组
简介:给定一个表示数据的整数数组 data ,返回它是否为有效的 UTF-8 编码。
题解 1 - cpp
- 编辑时间:2022-03-13
- 执行用时:4ms
- 内存消耗:13.5MB
- 编程语言:cpp
- 解法介绍:遍历。
#define MAXBIT 7
·class Solution {
public:
bool validUtf8(vector<int>& data) {
int n = data.size(), remain = 0;
for (auto& byte : data) {
if (remain) {
// 有残留但不是10
if (!check10(byte)) return false;
remain--;
continue;
}
if ((byte & 1 << MAXBIT) == 0) continue;
// 无残留但是10
if (check10(byte)) return false;
while (remain < MAXBIT && (1 << (MAXBIT - remain - 1) & byte) > 0)
remain++;
// 剩余残留>3
if (remain >= 4) return false;
}
return remain == 0;
}
bool check10(int byte) {
return (byte & 1 << MAXBIT) > 0 && (byte & 1 << (MAXBIT - 1)) == 0;
}
};