建站软件可以不通过网络建设吗,知乎代运营,php网站开发工程师,做网站托管的好处1. 题目
UTF-8 中的一个字符可能的长度为 1 到 4 字节#xff0c;遵循以下的规则#xff1a;
对于 1 字节的字符#xff0c;字节的第一位设为0#xff0c;后面7位为这个符号的unicode码。对于 n 字节的字符 (n 1)#xff0c;第一个字节的前 n 位都设为1#xff0c…1. 题目
UTF-8 中的一个字符可能的长度为 1 到 4 字节遵循以下的规则
对于 1 字节的字符字节的第一位设为0后面7位为这个符号的unicode码。对于 n 字节的字符 (n 1)第一个字节的前 n 位都设为1第 n1 位设为0后面字节的前两位一律设为10。剩下的没有提及的二进制位全部为这个符号的unicode码。 这是 UTF-8 编码的工作方式 Char. number range | UTF-8 octet sequence(hexadecimal) | (binary)-----------------------------------------------------------------0000 0000-0000 007F | 0xxxxxxx0000 0080-0000 07FF | 110xxxxx 10xxxxxx0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
给定一个表示数据的整数数组返回它是否为有效的 utf-8 编码。注意:
输入是整数数组。只有每个整数的最低 8 个有效位用来存储数据。
这意味着每个整数只表示 1 字节的数据。示例 1:
data [197, 130, 1], 表示 8 位的序列: 11000101 10000010 00000001.
返回 true 。
这是有效的 utf-8 编码为一个2字节字符跟着一个1字节字符。示例 2:
data [235, 140, 4], 表示 8 位的序列: 11101011 10001100 00000100.
返回 false 。
前 3 位都是 1 第 4 位为 0 表示它是一个3字节字符。
下一个字节是开头为 10 的延续字节这是正确的。
但第二个延续字节不以 10 开头所以是不符合规则的。来源力扣LeetCode 链接https://leetcode-cn.com/problems/utf-8-validation 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
前面1的个数不能为1或者大于4为0的跳过检查下一个为2-4检查后面个数足不足且都以10开头
class Solution {
public:bool validUtf8(vectorint data) {int i 0, j, one 0, n data.size();while(i n){for(j 7; j 0; --j){if((data[i](1j)))//该位为1one;//1的个数elsebreak;}if(one1 || one 4)return false;i;if(one 0)continue;//0个1检查下一位if(n-i one-1) return false;//个数不够不行for( ; i n (--one); i)//后面均以10开头{if(((data[i]7)1)!1 || ((data[i]6)1)!0)return false;}}return true;}
};28 ms 13.4 MB