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

力扣判断字符是否唯一(位运算)

文章目录

    • 给一个数n,判断它的二进制位中第x位是0还是1(从0开始计数)
    • 将一个数n的二进制位第X位修改为1(从0开始计数)
    • 将一个数n的二进制第x位修改为0(从0开始计数)
    • 提取一个数n二进制中最右侧的1
    • 去掉一个数n二进制表示中最右侧的1

今天我们通过判断字符是否唯一这个题来了解位运算的一些性质。
在做题之前我们需要先解决两个问题。

给一个数n,判断它的二进制位中第x位是0还是1(从0开始计数)

在这里插入图片描述

如果我们需要判断第4位是0还是1,我们只需要将n右移三位,然后和1按位与就可以了。

(n>>x)&1

先将n右移X位再按位与

将一个数n的二进制位第X位修改为1(从0开始计数)

在这里插入图片描述

实现方式:

n=n|(1<<x)

先将1左移X-1位再与n按位或

将一个数n的二进制第x位修改为0(从0开始计数)

实现方式:

n=n&(~(1<<x))

将1左移X-1位取反再按位与
大家可以自己举例子尝试

提取一个数n二进制中最右侧的1

实现方式:

n&(-n)

去掉一个数n二进制表示中最右侧的1

实现方式:

n&(n-1)

接下来运用上面的规律来解决判判断字符是否唯一这道题
实现一个算法,确定一个字符串 s 的所有字符是否全都不同。

示例 1:
输入: s = “leetcode”
输出: false
示例 2:
输入: s = “abc”
输出: true
限制:
0 <= len(s) <= 100
s[i]仅包含小写字母
如果你不使用额外的数据结构,会很加分。
解题思路:

因为只有26个小写字母,int 类型有32个比特位,所以我们可以将32个比特位看作一个哈希表(这个是思路有个名字叫位图),然后遍历字符串,如果字符第一次出现就将该字符对应的比特位改为1(例如字符‘a’对应的是0下标),没有出现的比特位就是0,这样我们只需要判断该字符对应的比特位是否是1,就可以判断字符串是否重复。

代码实现:

class Solution {public boolean isUnique(String astr) {int ret=0;if((astr.length())>26){return false;}char[] str=astr.toCharArray();for(char ch:str){int i=ch-'a';if(((ret>>i)&1)==1)//判断字符在之前是否出现过{return false;}ret|=1<<i;//字符第一次出现将对应的比特位初始为1}return true;}
}

大家有什么看法意见可以留言评论。

http://www.lryc.cn/news/473250.html

相关文章:

  • GPU和CPU区别?为什么挖矿、大模型都用GPU?
  • 新兴斗篷cloak技术,你了解吗?
  • 【抽代复习笔记】34-群(二十八):不变子群的几道例题
  • Chrome和Firefox如何保护用户的浏览数据
  • CentOS 7镜像下载
  • opencv-windows-cmake-Mingw-w64,编译opencv源码
  • Puppeteer点击系统:解锁百度流量点击率提升的解决案例
  • Kyber原理解析
  • 2024 CCF CSP-J/S 2024 第二轮认证 真题试卷
  • Android 无障碍服务常见问题梳理
  • Milvus 与 Faiss:选择合适的向量数据库
  • 2024最全CTF入门指南、CTF夺旗赛及刷题网站(建议收藏!)
  • 【论文阅读】ESRGAN+
  • 北京市首发教育领域人工智能应用指南,力推个性化教育新篇章
  • 【Java并发编程】信号量Semaphore详解
  • window11使用wsl2安装Ubuntu22.04
  • 虚拟滚动 - 从基本实现到 Angular CDK
  • Spring WebFlux学习笔记(一)
  • 富格林:正确追损思维安全交易
  • 前端vue2迁移至uni-app
  • 恋爱脑学Rust之闭包三Traits:Fn,FnOnce,FnMut
  • 区块链介绍
  • git回滚间隔的提交
  • Map和Set(数据结构)
  • vue3uniapp实现自定义拱形底部导航栏,解决首次闪烁问题
  • 新需求编码如何注意低级错误代码
  • 系统架构图设计(行业领域架构)
  • windows 文件监控 c++ 11及以上版本可用
  • jsMind:炸裂项目,用JavaScript构建的思维导图库,GitHub上的热门开源项目
  • postman的脚本设置接口关联