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

题目:

题解:

Go 复制代码
const mask1, mask2 = 1 << 7, 1<<7 | 1<<6

func getBytes(num int) int {
    if num&mask1 == 0 {
        return 1
    }
    n := 0
    for mask := mask1; num&mask != 0; mask >>= 1 {
        n++
        if n > 4 {
            return -1
        }
    }
    if n >= 2 {
        return n
    }
    return -1
}

func validUtf8(data []int) bool {
    for index, m := 0, len(data); index < m; {
        n := getBytes(data[index])
        if n < 0 || index+n > m {
            return false
        }
        for _, ch := range data[index+1 : index+n] {
            if ch&mask2 != mask1 {
                return false
            }
        }
        index += n
    }
    return true
}
相关推荐
leoufung39 分钟前
LeetCode 92 反转链表 II 全流程详解
算法·leetcode·链表
im_AMBER2 小时前
Leetcode 59 二分搜索
数据结构·笔记·学习·算法·leetcode
leoufung2 小时前
LeetCode 61. 旋转链表(Rotate List)题解与思路详解
leetcode·链表·list
想搞艺术的程序员3 小时前
深入 NSQ 延迟消息实现原理:设计巧思与性能优化
性能优化·golang·nsq
leoufung7 小时前
逆波兰表达式 LeetCode 题解及相关思路笔记
linux·笔记·leetcode
Aspect of twilight9 小时前
LeetCode华为大模型岗刷题
python·leetcode·华为·力扣·算法题
2301_8079973810 小时前
代码随想录-day47
数据结构·c++·算法·leetcode
Elias不吃糖10 小时前
LeetCode每日一练(3)
c++·算法·leetcode
小年糕是糕手14 小时前
【C++】类和对象(二) -- 构造函数、析构函数
java·c语言·开发语言·数据结构·c++·算法·leetcode
(づど)15 小时前
解决VSCode中安装Go环境Gopls失败的问题
vscode·golang