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
}
相关推荐
pumpkin8451413 小时前
01 Coze Studio项目中所有关键术语的详细解释和代码示例
golang
菜鸟233号16 小时前
力扣213 打家劫舍II java实现
java·数据结构·算法·leetcode
狐5716 小时前
2026-01-18-LeetCode刷题笔记-1895-最大的幻方
笔记·算法·leetcode
Q741_14716 小时前
C++ 队列 宽度优先搜索 BFS 力扣 662. 二叉树最大宽度 每日一题
c++·算法·leetcode·bfs·宽度优先
踩坑记录17 小时前
leetcode hot100 54.螺旋矩阵 medium
leetcode
王老师青少年编程17 小时前
2024年3月GESP真题及题解(C++七级): 俄罗斯方块
c++·题解·真题·gesp·csp·俄罗斯方块·七级
AC赳赳老秦18 小时前
Dify工作流+DeepSeek:运维自动化闭环(数据采集→报告生成)
android·大数据·运维·数据库·人工智能·golang·deepseek
源代码•宸19 小时前
Leetcode—3. 无重复字符的最长子串【中等】
经验分享·后端·算法·leetcode·面试·golang·string
历程里程碑19 小时前
哈希2:字母异位符分组
算法·leetcode·职场和发展
阳明Coding19 小时前
golang从入门到通天—数据库操作(gorm框架使用)(最简单最详细的golang学习笔记)
笔记·学习·golang