You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Leetcode 393:UTF-8验证疑惑——测试用例为何返回False?

Leetcode 393:UTF-8验证测试用例分析

测试用例无效的原因

UTF-8编码规则明确要求:

  • 单字节字符以0开头;
  • 多字节字符的起始字节,前导1的数量只能是2、3、4个,分别对应2、3、4字节的字符,且后续每个字节必须以10开头;
  • 不允许起始字节的前导1数量超过4个(UTF-8最多支持4字节的Unicode字符)。

测试用例中的第一个数是250,二进制为11111010,开头有5个连续的1,这直接违反了UTF-8的编码规则,因此整个序列无效,正确答案为False。

你的代码错误点

问题出在check_byte_num函数及后续逻辑,它没有对起始字节的前导1数量做合法性校验:

  • 当起始字节的前导1数量为5(如250的二进制),该函数会返回5;
  • 后续代码仅检查了对应数量的续字节是否合法,却忽略了起始字节的前导1数量必须在2-4之间的核心规则。

修复方案:在获取char_num后,新增合法性判断,如果数值不在{1,2,3,4}范围内,直接返回False。修改后的关键逻辑示例:

char_num = check_byte_num(char_bit)
# 新增起始字节合法性校验
if char_num not in {1,2,3,4}:
    return False

内容的提问来源于stack exchange,提问作者Ian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 01:05:26