思路:
重点在于考虑好什么情况下是不符合的。
代码:
class Solution {
public:
int get(int t,int k){
return t >> k & 1;
}
bool validUtf8(vector<int>& data) {
int n = data.size();
for(int i = 0;i < n;i++){
if(!get(data[i],7)) continue;
else{
int k = 0;
while(k <= 4 && get(data[i],7 - k)) k++;
//cout<<k;
if(k == 1 || k > 4) return false;
for (int j = 0; j < k - 1; j ++ ) {
int t = i + 1 + j;
if (t >= data.size()) return false;
if (!(get(data[t], 7))) return false;
}
i += k - 1;
}
}
return true;
}
};
评论区