发布时间:2023-04-02 12:30
力扣
从前往后遍历,检查每一个字符是否合法。
class Solution {
public:
bool check(vector& data, int& p){
int n;
for(n = 1; n <= 5; n++){
if((data[p] & 1 << 8 - n) == 0)
break;
}
if(n == 2 || n == 6) return false;
if(n != 1) n--;
for(int i = p + 1; i < p + n; i++){
if(i == data.size() || !((data[i] & 1 << 7) != 0 && (data[i] & 1 << 6) == 0))
return false;
}
p += n;
return true;
}
bool validUtf8(vector& data) {
int p = 0;
while(p != data.size()){
if(!check(data, p)) return false;
}
return true;
}
};