Write a function to validate whether the input is valid UTF-8. Input will be string or byte array, output should be true or false.
UTF-8是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。UTF-8的编码规则很简单,只有二条:
1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。
比如:
0xxxxxxx是一个合法的单字节UTF8编码。
110xxxxx 10xxxxxx是一个合法的2字节UTF8编码。
1110xxxx 10xxxxxx 10xxxxxx是一个合法的3字节UTF8编码。
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx是一个合法的4字节UTF8编码。
bool valid_utf8(const vector<unsigned char>& data) { int size = 0; for(auto c : data) { if(size == 0) { if((c >> 5) == 0b110) size = 1; else if((c >> 4) == 0b1110) size = 2; else if((c >> 3) == 0b11110) size = 3; else if(c >> 7) return false; } else { if((c >> 6) != 0b10) return false; --size; } } return size == 0; }
相关推荐
VUE 面试题汇合 vue-interview-questions-master VUE 面试题汇合 vue-interview-questions-master VUE 面试题汇合 vue-interview-questions-master VUE 面试题汇合 vue-interview-questions-master VUE 面试题...
【标题】"interview-docs-master.zip" 是一个压缩文件,通常包含一系列关于面试准备的文档,特别是针对Java程序员的面试资源。这个压缩包可能是为了帮助求职者在寻找Java开发职位时,熟悉并掌握常见的面试问题和解答...
123-Essential-JavaScript-Interview-Question, JavaScript访问问题 123 -JavaScript-Interview-Questions这本书将由 2018年06月 完成并可以供购买。 如果你想让我把这本书的早期拷贝,请在这里添加你的NAME 和电子...
标题中的"Interview-code-practice-python-master_escapek5u_python_"暗示了这是一个关于Python编程的面试题练习项目,可能包含了各种常见的编程题目,旨在帮助开发者准备技术面试。"escapek5u"可能是创建或整理这个...
本压缩包中的"coding-interview-university-master"目录,很可能是包含了一个逐步学习算法和数据结构的课程结构,这对于准备技术面试,尤其是硅谷流行的“编程面试”极其有价值。 学习算法,首先要理解基础的数据...
这份名为"Interview-Materials.rar__interview_interview-q"的压缩包文件显然是为准备IT行业面试者精心准备的一份资源集合。它涵盖了C、C++以及Linux等多个关键领域的知识,帮助求职者一站式获取必要的面试准备材料...
"Algorithm_for_Interview-Chinese-master.zip" 这个压缩包文件很可能包含了丰富的面试准备资料,聚焦于C++语言,涵盖了多种核心算法和概念。让我们深入探讨一下这些关键知识点。 1. **查找与排序**: - **查找...
"Java-Interview-超全集合github上评分最高的jiva面试题"就是一个这样的宝藏,它涵盖了Java编程语言、Git版本控制工具以及面试策略等多个方面的知识点。以下是这些内容的详细解析: 1. **Java基础** - **数据类型...
Technical-Interview-Preparation-Checklist.pdf
DOCKER-INTERVIEW-QUESTIONS.pdf
深度学习框架001 深度学习框架有哪些?002 介绍一下TensorFlow常用的Optimizer003 Caffe的depthwise为什么慢,怎么解决00
115-Java-Interview-Questions-and-Answers, 115 Java访谈问题和答案- 终极列表 #115-Java-Interview-Questions-and-Answers我们将讨论关于Java面试中可以使用的各种问题,以便雇主在Java和面向对象编程方面测试你的...
java面试题_java-interview-questions-master.zip2、在 Java 程序中怎么保证多线程的运行安全? 出现线程安全问题的原因一般都是三个原因: 1、 线程切换带来的原子性问题 解决办法:使用多线程之间同步...
《深入解析Interview-main源码》 在编程领域,面试是检验开发者技能的重要环节,而"Interview-main-源码.rar"这个压缩包很可能包含了常见的面试题目和相关问题的解答,以及可能的实现源代码。这份源码是开发者们...
Java interview-高级Java面试题2019_java-interview.zip
google-interview-university:我对“ google-interview-university”的学习
考研保研简历提问助手-GLM4_Postgraduate-Interview-Question-Assistant
java面试资料_java-interview-lzj
Angular-angular-interview-questions.zip,300个角度面试问答列表[WIP]角度面试问答,Angularjs于2016年发布,是Angularjs的重写版。它专注于良好的移动开发、模块化和改进的依赖注入。angular的设计目的是全面解决...
java服务端面试题整理_java-server-interview-questions.zip