Java | Leetcode Java题解之第393题UTF-8编码验证

题目:

题解:

java 复制代码
class Solution {
    static final int MASK1 = 1 << 7;
    static final int MASK2 = (1 << 7) + (1 << 6);

    public boolean validUtf8(int[] data) {
        int m = data.length;
        int index = 0;
        while (index < m) {
            int num = data[index];
            int n = getBytes(num);
            if (n < 0 || index + n > m) {
                return false;
            }
            for (int i = 1; i < n; i++) {
                if (!isValid(data[index + i])) {
                    return false;
                }
            }
            index += n;
        }
        return true;
    }

    public int getBytes(int num) {
        if ((num & MASK1) == 0) {
            return 1;
        }
        int n = 0;
        int mask = MASK1;
        while ((num & mask) != 0) {
            n++;
            if (n > 4) {
                return -1;
            }
            mask >>= 1;
        }
        return n >= 2 ? n : -1;
    }

    public boolean isValid(int num) {
        return (num & MASK2) == MASK1;
    }
}
相关推荐
码界奇点几秒前
Java Web学习 第1篇前端基石HTML 入门与核心概念解析
java·前端·学习·xhtml
.ZGR.3 分钟前
蓝桥杯高校新生编程赛第二场题解——Java
java·算法·蓝桥杯
陈果然DeepVersion6 分钟前
Java大厂面试真题:Spring Boot+Kafka+AI智能客服场景全流程解析(四)
java·spring boot·微服务·kafka·面试题·rag·ai智能客服
好学且牛逼的马17 分钟前
【JavaWeb|day16 Web前端基础】
java
haofafa36 分钟前
高精度加减法
java·数据结构·算法
huihuihuanhuan.xin38 分钟前
后端八股之消息队列
java·rabbitmq
渡我白衣1 小时前
C++世界的混沌边界:undefined_behavior
java·开发语言·c++·人工智能·深度学习·语言模型
88Ra1 小时前
Spring Boot 3.3新特性全解析
java·spring boot·后端
剑海风云1 小时前
JDK 26:HTTP/3 支持已可在 HTTP 客户端 API 中使用
java·开发语言·http
好学且牛逼的马1 小时前
【SSM框架 | day24 spring IOC 与 DI】
java·后端·spring