393.UTF-8编码验证
UTF-8 中的一个字符可能的长度为 1 到 4 字节,遵循以下的规则:
- 对于 1 字节的字符,字节的第一位设为0,后面7位为这个符号的unicode码。
- 对于 n 字节的字符 (n > 1),第一个字节的前 n 位都设为1,第 n+1 位设为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 开头,所以是不符合规则的。
class Solution {
public:
bool validUtf8(vector<int>& data) {
int cnt = 0;
for (int d : data) {
if (cnt == 0) {
if ((d >> 5) == 0b110) cnt = 1;
else if ((d >> 4) == 0b1110) cnt = 2;
else if ((d >> 3) == 0b11110) cnt = 3;
else if (d >> 7) return false;
} else {
if ((d >> 6) != 0b10) return false;
--cnt;
}
}
return cnt == 0;
}
};
393.UTF-8编码验证相关推荐
- html转换编码格式,html编码转换 html编码设置utf gbk编码转换图文教程
html编码转换 html编码设置utf gbk编码转换图文教程篇 常用HTML编码之urf-8编码转换为gb2312编码或者gb2312转换为utf-8编码快速转换设置,这里DIVCSS5介绍使用D ...
- python utf—8编码问题待解决
执行python manage. py runserver后出现错误 utf-8编码出错 (result, consumed) = self._buffer_encode(data, self.err ...
- LeetCode 393. UTF-8 编码验证(位运算)
1. 题目 UTF-8 中的一个字符可能的长度为 1 到 4 字节,遵循以下的规则: 对于 1 字节的字符,字节的第一位设为0,后面7位为这个符号的unicode码. 对于 n 字节的字符 (n &g ...
- 【数据结构与算法】之深入解析“UTF-8编码验证”的求解思路与算法示例
一.题目要求 给定一个表示数据的整数数组 data,返回它是否为有效的 UTF-8 编码. UTF-8 中的一个字符可能的长度为 1 到 4 字节,遵循以下的规则: 对于 1 字节的字符,字节的第一位 ...
- mysql选择utf 8编码_MySQL支持UTF-8编码全攻略
来源:网海拾贝 最近看到良多若干关于MySql支持utf-8编码的成绩,恰好自身也要用,去找了一下,没有写的很片面的. 清算了一下,供各人参考. 在一下效能器设置测试议决 效能器设置: window2 ...
- html utf 8编码转换器,utf8和gb2312编码在线转换工具
utf8和gb2312编码在线转换工具_网页代码站(www.webdm.cn) style="Z-INDEX: 1000; VISIBILITY: hidden; WIDTH: 1px; P ...
- C练题笔记之:Leetcode-393. UTF-8 编码验证
题目: 给定一个表示数据的整数数组 data ,返回它是否为有效的 UTF-8 编码. UTF-8 中的一个字符可能的长度为 1 到 4 字节,遵循以下的规则: 对于 1 字节 的字符,字节的第一位设 ...
- mac mysql utf 8编码_MacOS下MySQL设置UTF8编码问题
1,检查默认安装的MySQL的字符集 mysql> show variables like '%char%'; +--------------------------+------------- ...
- leetcode算法题--UTF-8 编码验证
原题链接:https://leetcode-cn.com/problems/utf-8-validation/ class Solution {public:static const int MASK ...
- 营业执照编码验证规则(15位和18位
参考: https://blog.csdn.net/archer119/article/details/52904286
最新文章
- SAP HANA简介
- 直播 | 清华大学王晨阳:轻量级Top-K推荐框架及相关论文介绍
- (九)数据结构之“图”
- Android Notification总结
- [转]javascript小技巧,超强推荐
- linux文件名过长无法删除,不能删除文件,出现“源文件名长度大于系统支持的长度...
- CentOS7上GitLab的使用
- php 添加样式,PHP实现可自定义样式的分页类
- 《A Practical Guide to Continuous Delivery》作者访谈录
- CentOS安装及注意事项
- Dubbo的架构体系
- python核心编程-第三章-个人笔记
- centos源码安装Xen
- linux scp 自动脚本,scp自动运行脚本
- 简账(开源记账软件)-数据库设计
- EXCEL长数字显示和转化为文本
- web sql indexedDB
- Deepin开发环境搭建
- 通过MediaRecorder 录制视频的时候,魅族手机录制视频后,大小显示0
- 清华学霸讲计算机,清华学霸的霸气演讲!看完后才明白人与人的差距就是这样拉开的!...
热门文章
- 布局篇(1)—If you love css …
- 用.NET提供的Mail来发邮件
- [NOI2016]优秀的拆分
- Fragment中获取Activity的Context
- talk record
- [ASM] 基础概念
- 给wordpress添加留言者操作系统、浏览器和运营商信息
- java入门第二季 答答租车系统
- 深职院c语言考试试卷,深职院第1章C语言基础与入门教学.ppt
- 为什么训练时测试准确率大幅度波动_Nature Mach Intell|类药性预测准确率有极限...