• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • YouClaw
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

youyou-dev

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

1 比特与 2 比特字符

1 比特与 2 比特字符

image

class Solution {
    public boolean isOneBitCharacter(int[] bits) {
    int n = bits.length, i = 0;
    while (i < n - 1) {    
        i += bits[i] + 1;     
    }
    return i == n - 1;      
  }
}

注意

要符合题意规则:一比特是0,二比特是10或11

我们可以把遍历过程想象成在数组上“行走”:

  1. 规则:
    • 如果站在 0 上(bits[i] == 0),说明这是一个一比特字符,迈 1 步走到下一个位置。
    • 如果站在 1 上(bits[i] == 1),说明这是一个二比特字符的开头,需要迈 2 步,跳过它和下一个比特。
  2. 表达式 i += bits[i] + 1 完美实现了这个规则:
    • 当 bits[i] == 0 时,i += 0 + 1 → 前进 1 步。
    • 当 bits[i] == 1 时,i += 1 + 1 → 前进 2 步。
  3. 循环条件 i < n - 1 确保我们不会用最后一个元素(索引 n-1)来决定步数。因为我们只关心最后一个字符本身是什么类型,而不是用它去“迈步”。

该题来自力扣:https://leetcode.cn/problems/1-bit-and-2-bit-characters/

posted on 2026-03-29 17:43  U~U  阅读(2)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3