题意描述
- 给定一个数组,数组中的每一个数组都代表一个8位的二进制数,0-255之间,则按照UTF-8的规则,判断这个数组是不是一个UTF-8的字符
解题思路
- 代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152class Solution {public:bool isOne(int num, int k) {int flag = 1 << (8-k);return num & flag;}bool isOneZero(int num) {return isOne(num, 1) && (!isOne(num, 2));}bool isOneOneZero(int num) {return isOne(num, 1) && isOne(num, 2) && (!isOne(num, 3));}bool isOneOneOneZero(int num) {return isOne(num, 1) && isOne(num, 2) && isOne(num, 3) && (!isOne(num, 4));}bool isOneOneOneOneZero(int num) {return isOne(num, 1) && isOne(num, 2) && isOne(num, 3) && isOne(num, 4) && (!isOne(num, 5));}bool validUtf8(vector<int>& data) {int size = data.size();if(size == 0)return false;int index = 0;for(int index = 0; index < size;) {if(!isOne(data[index], 1)) {index ++;} else if (isOneOneZero(data[index])) {if(isOneZero(data[index+1]))index += 2;elsereturn false;} else if (isOneOneOneZero(data[index])) {if(isOneZero(data[index+1]) && isOneZero(data[index+2]))index += 3;elsereturn false;} else if (isOneOneOneOneZero(data[index])) {if(isOneZero(data[index+1]) && isOneZero(data[index+2]) && isOneZero(data[index+3]))index += 4;elsereturn false;} elsereturn false;}return true;}};
第393题---UTF-8 Validation
坚持原创技术分享,您的支持将鼓励我继续创作!