393. UTF-8 编码验证
模拟,首先一个字符的情况判断第一位是不是0即可,然后判断前5位几个1,如果1个或者5个1都不合法,同时判断后面几个数是否符合10开头,当遍历完所有数字之后都合法返回true
class Solution {
public:
int get(int x, int k) {
return x >> k & 1;
}
bool validUtf8(vector<int>& data) {
for (int i = 0; i < data.size(); i ++ ) {
if (!get(data[i], 7)) continue;
int k = 0;
while (k <= 4 && get(data[i], 7 - k)) k ++ ;
if (k == 1 || k > 4) return false;
for (int j = 1; j < k; j ++ ) {
int t = i + j;
if (t >= data.size()) return false;
if (get(data[t], 7) != 1 || get(data[t], 6) != 0) return false;
}
i += k - 1;
}
return true;
}
};

该篇博客探讨了一个用于验证UTF-8编码正确性的算法。通过遍历字节序列,检查每个字符的最高位以及后续字节的特定模式,确保它们符合UTF-8编码规范。文章详细解释了算法逻辑,并提供了C++实现代码,对于理解和检测UTF-8编码问题具有指导意义。
1609

被折叠的 条评论
为什么被折叠?



