当前位置: 首页 > news >正文

Kimi LeetCode 3677. 统计二进制回文数字的数目 Rust实现

这是可以直接提交到 LeetCode 的完整 Rust 实现:

```rust
impl Solution {
pub fn count_binary_palindromes(n: i64) -> i32 {
if n == 0 {
return 1;
}

let mut count: i64 = 1; // 0 是回文数

// 获取 n 的二进制位数(不含前导零)
let m = 64 - n.leading_zeros() as i32;

// 1. 统计二进制位数小于 m 的所有回文数
// 长度为 i 的二进制回文数个数 = 2^((i-1)/2)
// 首位必须是 1,左半部分(含中间位)有 (i-1)/2 个自由位
for i in 1..m {
count += 1i64 << ((i - 1) / 2);
}

// 2. 统计二进制位数等于 m 且不超过 n 的回文数
let mid = m / 2; // 左半部分的长度(奇数时包含中间位)

// 从左半部分的最高位向中间遍历
// 如果 n 的某一位是 1,我们可以把它改成 0,剩下的位可以任意填
for i in (mid..=m - 2).rev() {
if (n >> i) & 1 == 1 {
// 当前位填 0(比 n 小),剩余可自由填的位数产生的回文数个数
count += 1i64 << (i - mid);
}
}

// 3. 检查 n 本身(或其左半部分生成的回文数)是否 <= n
let mut left = n >> mid; // 提取左半部分(含中间位,如果是奇数长度)
let mut palindrome = if m % 2 != 0 { left >> 1 } else { left };

// 将左半部分镜像到右边,构造完整的回文数
while left > 0 {
palindrome = (palindrome << 1) + (left & 1);
left >>= 1;
}

if palindrome <= n {
count += 1;
}

count as i32
}
}
```

核心思路

步骤 说明
1. 特判 0 `0` 的二进制是 `"0"`,是回文数
2. 统计短位数回文 长度为 `i` 的二进制回文数,首位必为 1,左半部分(含中间位)有 `(i-1)/2` 个自由位,共 `2^((i-1)/2)` 个
3. 统计同位数回文 从高位到低位遍历 `n` 的左半部分。遇到 `1` 时,将其改为 `0`,剩余自由位可任意填,累加方案数
4. 检查 n 本身 用 `n` 的左半部分构造回文数,若 ≤ n 则计数 +1

复杂度

- 时间:`O(log n)`,只遍历 `n` 的二进制位
- 空间:`O(1)`

http://www.cnnetsun.cn/news/3625882.html

相关文章:

  • 《绝区零》3.0版本卡池流水分析:多平台数据对比与运营策略
  • 中兴光猫解锁终极指南:3步免费开启高级权限
  • 2026年AI Agent平台OpenClaw架构解析与实战测评
  • 终极AMD Ryzen性能调试指南:免费开源SMU调试工具完全解析
  • 计算机毕业设计之网上选课系统
  • 3分钟解锁音乐自由:ncmdump解密转换实战指南
  • TI ADS7851EVM-PDK评估套件深度解析:从硬件设计到软件实战
  • 050、YOLOv8改进实战:HGNetv2高性能骨干替换Backbone与代码实现
  • 如何通过4个核心模块掌握Mermaid Live Editor:专业级图表实时协作实战指南
  • Claude Team计划降至2人:AI协作工具如何赋能小团队技术开发
  • 旧金山人说话像AI?LLM语言模型与人类语言趋同现象分析
  • 如何3分钟轻松下载网页视频:猫抓视频嗅探工具终极指南
  • D3.js与React构建交互式网络图:斯坦利杯冠军可视化实践
  • 软PINN在二维稳态对流传热方程求解中的应用与实践
  • AMD锐龙终极调试指南:30分钟掌握硬件性能调优神器
  • 10分钟用Godot Open RPG搭建可运行RPG原型:模块化框架实战指南
  • 网盘直链解析神器:九大平台一键获取真实下载地址,告别限速烦恼
  • GetQzonehistory:5分钟找回QQ空间所有历史说说的终极指南
  • 企业文档AI助理:OpenClaw架构设计与实战优化
  • AI Agent开发实战:从原型到量产的7步方法论
  • 学术写作AI工具深度评测与使用指南
  • 高效网页长截图自动化方案:Full Page Screen Capture Chrome扩展实战指南
  • AMD Zen 6 EPYC处理器3D V-Cache技术解析与数据中心应用前景
  • MSP430系统控制模块深度解析:低功耗、JTAG与TLV实战指南
  • 高佣返利app的佣金比例动态配置中心实现与灰度发布策略
  • LLM与JSON模板结合的结构化数据提取实践
  • 零基础AI换脸神器:roop-unleashed终极快速入门指南
  • 终极虚拟显示器方案:用ParsecVDD彻底解放你的Windows桌面空间
  • Unity HDRP水面交互优化:Compute Shader实现高效漂浮与动态波浪
  • AI Agents内存技术:形式、功能与动态管理解析