跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++算法

位运算实战:判断字符唯一性与查找丢失数字

位运算实战解析涵盖两个核心场景。针对判断字符是否唯一问题,采用位图思想,利用整型变量的比特位映射字符状态,在 O(1) 空间内完成检测。针对丢失数字问题,利用异或运算的自反性,将输入数组与理论序列整体异或,消除重复项后剩余即为缺失值。文中提供 C++ 代码实现及逻辑推导,帮助读者理解位操作在算法优化中的实际应用。

并发大师发布于 2026/3/27更新于 2026/7/2331 浏览
位运算实战:判断字符唯一性与查找丢失数字

前言

位运算在算法优化中常能带来意想不到的效果,特别是在空间受限或需要极致性能的场景下。今天我们通过两道经典题目,实战演练位图与异或运算的核心技巧。

位运算基础前置知识

在这里插入图片描述

上面提到的公式和推导建议大家记下来,这是后续解题的基础。

34. 判断字符是否唯一

题目链接:

面试题 01.01. 判定字符是否唯一 - 力扣(LeetCode)

题目描述:

在这里插入图片描述

题目示例:

在这里插入图片描述

解法(位图的思想)

算法思路

利用【位图】的思想,每一个【比特位】代表一个【字符】。一个 int 类型的变量有 32 位,足够表示所有的小写字母。如果比特位是 0,表示该字符未出现过;如果是 1,则表示已出现。这样我们就可以用一个整数来充当哈希表,无需额外开辟空间。

C++ 算法代码

class Solution {
public:
    bool isUnique(string astr) {
        if (astr.size() > 26) return false;
        int m = 0;
        for (auto& s : astr) {
             ((m >> (s - )) & )  ;
             m |= ( << (s - ));
        }
         ;
    }
};
if
'a'
1
return
false
else
1
'a'
return
true

算法总结

在这里插入图片描述

在这里插入图片描述

35. 丢失的数字

题目链接:

268. 丢失的数字 - 力扣(LeetCode)

题目描述:

在这里插入图片描述

题目示例:

在这里插入图片描述

解法(位运算)

算法思路

设数组的大小为 n,那么缺失之前的数就是【0,n】,数组中是在【0,n】中缺失一个数形成的序列。如果我们把数组中的所有数,以及【0,n】中的所有数全部【异或】在一起,根据【异或】运算的【消消乐】规律(相同数字异或为 0),最终的异或结果应该就是缺失的那个数。

C++ 算法代码

class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int ret = 0;
        for (auto& n : nums) ret ^= n;
        for (size_t i = 0; i <= nums.size(); i++) ret ^= i;
        return ret;
    }
};

算法总结

在这里插入图片描述

在这里插入图片描述

结语

这两道题展示了位运算在空间复杂度和时间效率上的优势。掌握位图与异或技巧,能让你的算法解决方案更加优雅高效。

目录

  1. 前言
  2. 位运算基础前置知识
  3. 34. 判断字符是否唯一
  4. 解法(位图的思想)
  5. 算法思路
  6. C++ 算法代码
  7. 算法总结
  8. 35. 丢失的数字
  9. 解法(位运算)
  10. 算法思路
  11. C++ 算法代码
  12. 算法总结
  13. 结语
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 基于 SpringBoot 的图书租借系统设计与实现
  • 实战 LLaMA Factory:在国产 DCU 上高效微调 Llama 3 模型
  • STL 文件预览工具:使用 stl-thumb 生成 3D 模型缩略图
  • 无需公网 IP 安全远程访问本地 AI 服务方案
  • 人工智能发展历程与现状分析
  • Ubuntu 环境下 RabbitMQ 快速安装与配置指南
  • .NET 集成 GoView 低代码可视化大屏实战指南
  • Linux System V 共享内存:原理、实操与避坑指南
  • 计算机网络基础定义与资源交换机制
  • HarmonyOS PreviewKit 文件预览功能入门与后端示例
  • 阿里巴巴低代码引擎实战:构建企业级可视化开发平台
  • 大模型蒸馏有多普遍:一项量化研究的发现
  • OpenClaw 搭配本地千问模型实现电脑 AI 助理
  • Git 工作流程详解:从概念到实战选择
  • OpenClaw 全平台卸载指南(Windows/macOS/Linux/npm/pnpm)
  • ToDesk 集成 ToClaw:AI 助手可执行电脑自动化操作
  • 二叉树深度优先遍历实战:计算布尔值与路径数字和
  • C++ 容器适配器详解:Stack、Queue、Priority Queue 与 Deque
  • 如何为前端项目编写优秀的 AI Agent Skills
  • 使用 Jenkins Pipeline 自动化构建与部署 Java 项目

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online