当前位置: 首页 > 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;}
}

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

相关文章:

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

文章目录 给一个数n,判断它的二进制位中第x位是0还是1(从0开始计数)将一个数n的二进制位第X位修改为1(从0开始计数)将一个数n的二进制第x位修改为0(从0开始计数)提取一个数n二进制中最右侧的1去掉一个数n二进制表示中最右侧的1 今天我们通过判断字符是否唯一这个题来了解位运算…...

GPU和CPU区别?为什么挖矿、大模型都用GPU?

GPU(图形处理单元)和CPU(中央处理单元)是计算机中两种不同类型的处理器&#xff0c;它们在设计和功能上有很大的区别。 CPU是计算机的大脑&#xff0c;专门用于执行各种通用任务&#xff0c;如操作系统管理、数据处理、多任务处理等。它的架构设计旨在适应多种任务&#xff0c…...

新兴斗篷cloak技术,你了解吗?

随着互联网技术的飞速发展&#xff0c;网络营销领域也经历了翻天覆地的变革。 从最早的网络横幅广告到如今主流的搜索引擎和社交媒体营销&#xff0c;广告形式变得越来越多样。 其中&#xff0c;搜索引擎广告一直以其精准投放而备受青睐&#xff0c;但近年来&#xff0c;一项名…...

【抽代复习笔记】34-群(二十八):不变子群的几道例题

例1&#xff1a;证明&#xff0c;交换群的任何子群都是不变子群。 证&#xff1a;设(G,o)是交换群&#xff0c;H≤G&#xff0c; 对任意的a∈G&#xff0c;显然都有aH {a o h|h∈H} {h o a|h∈H} Ha。 所以H⊿G。 【注&#xff1a;规范的不变子群符号是一个顶角指向左边…...

Chrome和Firefox如何保护用户的浏览数据

在当今数字化时代&#xff0c;保护用户的浏览数据变得尤为重要。浏览器作为我们日常上网的主要工具&#xff0c;其安全性直接关系到个人信息的保密性。本文将详细介绍Chrome和Firefox这两款主流浏览器如何通过一系列功能来保护用户的浏览数据。&#xff08;本文由https://chrom…...

CentOS 7镜像下载

新版本系统镜像下载&#xff08;当前最新是CentOS 7.4版本&#xff09; CentOS官网 官网地址 http://isoredirect.centos.org/centos/7.4.1708/isos/x86_64/ http://mirror.centos.org/centos/7/isos/ 国内的华为云&#xff0c;超级快&#xff1a;https://mirrors.huaweiclou…...

opencv-windows-cmake-Mingw-w64,编译opencv源码

Windows_MinGW_64_OpenCV在线编译动态库,并使用在C项目: (mingw-w64 cmakegithub actions方案) 修改版opencv在线编译: 加入opencv-contrib库, 一起编译生成动态库,在线编译好的opencv动态库,可以下载使用.验证opencv动态库是否可用的模板项目,测试opencv动态库是否可用的模板…...

Puppeteer点击系统:解锁百度流量点击率提升的解决案例

在数字营销领域&#xff0c;流量和搜索引擎优化&#xff08;SEO&#xff09;是提升网站可见性的关键。我开发了一个基于Puppeteer的点击系统&#xff0c;旨在自动化地提升百度流量点击率。本文将介绍这个系统如何通过模拟真实用户行为&#xff0c;优化关键词排名&#xff0c;并…...

Kyber原理解析

Kyber是一种IND-CCA2安全的密钥封装机制。Kyber的安全性基于在模格&#xff08;MLWE问题&#xff09;中解决LWE问题的难度。Kyber的构造采⽤两阶段⽅法&#xff1a;⾸先介绍⼀种⽤来加密固定32字节⻓度的消息原⽂的IND-CPA安全性的公钥加密⽅案&#xff0c;我们称之为 CPAPKE&a…...

2024 CCF CSP-J/S 2024 第二轮认证 真题试卷

2024年信息学奥赛CSP-J2入门级复赛真题试卷 题目总数&#xff1a;4 总分数&#xff1a;400 编程题 第 1 题 问答题 扑克牌(poker) 【题目描述】 小 P 从同学小 Q 那儿借来一副 n 张牌的扑克牌。 本题中我们不考虑大小王&#xff0c;此时每张牌具有两个属性:花色和…...

Android 无障碍服务常见问题梳理

android 无障碍服务本意是为了帮助盲人操作手机而设计&#xff0c;但是现在也有人利用这个做自动化操作。 本片文章讲述的主要用作自动化方面。 官方文档 关于配置方法和接口列表&#xff0c;参考 无障碍 比较常用的接口&#xff1a; 1. 执行点击操作 2. 触摸屏幕&#xf…...

Milvus 与 Faiss:选择合适的向量数据库

向量数据库 Milvus 和 Faiss 都是处理大规模向量数据的工具&#xff0c;尤其适用于需要相似性搜索的场景&#xff0c;比如推荐系统、图像检索和自然语言处理等。但它们各自的设计初衷和功能有所不同&#xff0c;适用于不同的使用场景。下面&#xff0c;我们从性能、功能特性、部…...

2024最全CTF入门指南、CTF夺旗赛及刷题网站(建议收藏!)

文章目录 一、赛事介绍二、竞赛模式三、CTF各大题型简介四、赛题情况分析CTF 工具集合Web | Web 安全&#x1f578; MISC | 杂项❆ 基础工具❆ 解题工具❆ 开源脚本&#x1f511; Crypto | 密码学 &#x1f4ab; Reverse | 逆向基础工具&#x1f4a5; PWN | 二进制 &#x1f44…...

【论文阅读】ESRGAN+

学习资料 论文题目&#xff1a;进一步改进增强型超分辨率生成对抗网络&#xff08;ESRGAN : FURTHER IMPROVING ENHANCED SUPER-RESOLUTION GENERATIVE ADVERSARIAL NETWORK&#xff09;论文地址&#xff1a;2001.08073代码&#xff1a;ncarraz/ESRGANplus&#xff1a; ICASSP …...

北京市首发教育领域人工智能应用指南,力推个性化教育新篇章

近年来&#xff0c;人工智能在全球教育领域的应用呈现蓬勃发展之势&#xff0c;各国都在探索如何将其更好的融入教育体系&#xff0c;在这一背景下&#xff0c;北京市于10月26日发布《北京市教育领域人工智能应用指南》&#xff08;以下简称《指南》&#xff09;&#xff0c;推…...

【Java并发编程】信号量Semaphore详解

一、简介 Semaphore&#xff08;信号量&#xff09;&#xff1a;是用来控制同时访问特定资源的线程数量&#xff0c;它通过协调各个线程&#xff0c;以保证合理的使用公共资源。 Semaphore 一般用于流量的控制&#xff0c;特别是公共资源有限的应用场景。例如数据库的连接&am…...

window11使用wsl2安装Ubuntu22.04

目录 1、快速了解wsl2 安装子系统linux流程&#xff08;B站视频&#xff09; 2、wsl2常用命令 3、windows与子系统Linux文件访问方法 4、子系统linux使用windows网络代理、网络配置&#xff08;镜像网络&#xff0c;非NAT&#xff09; 5、wsl2 Ubuntu miniconda 安装 6、…...

虚拟滚动 - 从基本实现到 Angular CDK

简介 在大数据列表的处理上&#xff0c;虚拟滚动是一种优化性能的有效方式。本篇文章将详细介绍两种常见的虚拟滚动实现方式&#xff1a;使用 transform 属性和 Intersection Observer。重点讲解如何通过 transform 属性实现高效的虚拟滚动&#xff0c;并对比Angular CDK中的实…...

Spring WebFlux学习笔记(一)

核心思想 WebFlux主要是异步 例子 参考一个源码&#xff1a; https://blog.csdn.net/qq_43923045/article/details/106309432?spm1001.2014.3001.5506 GetMapping("/delay1")public Mono<RestResult> delayResult() {long l System.currentTimeMillis();…...

富格林:正确追损思维安全交易

富格林指出&#xff0c;对于如何正确追损的这个问题是需要持续付出时间和精力的&#xff0c;发现具备耐心的投资者往往在正确追损的路上更加游刃有余。他们总是可以保持较为平和的心态&#xff0c;不急不躁地分析原因并通过自身掌握的安全应对措施来进行交易。富格林在以下分享…...

前端vue2迁移至uni-app

1.确定文件存放位置 components: 继续沿用 pages: views内容移动到pages static: assets内容移动到static uni_modules: uni-app的插件存放位置 迁移前 src├─assets│ └─less├─components│ ├─common│ │ ├─CommentPart│ │ └─MessDetail│ ├─home│…...

恋爱脑学Rust之闭包三Traits:Fn,FnOnce,FnMut

在Rust中&#xff0c;FnOnce、FnMut和Fn是三个用于表示闭包&#xff08;closure&#xff09;类型的trait。闭包是一种特殊的函数&#xff0c;它可以捕获其环境变量&#xff0c;即在其定义时所处的作用域中的变量。以下是关于这三个trait的详细介绍&#xff1a; 1. FnOnce&#…...

区块链介绍

区块链&#xff08;英文名&#xff1a;blockchain或block chain&#xff09;是一种块链式存储、不可篡改、安全可信的去中心化分布式账本&#xff0c;它结合了分布式存储、点对点传输、共识机制、密码学等技术&#xff0c;通过不断增长的数据块链&#xff08;Blocks&#xff09…...

git回滚间隔的提交

如果你需要回滚几个非连续的提交&#xff0c;可以使用 git revert 来选择性地撤销这些提交。这样做不会改变提交历史&#xff0c;只是会在当前分支上创建新的提交来反转指定的更改。 ### 使用 git revert 回滚间隔的提交 1. **查看提交历史**&#xff1a; 首先&#xff0c…...

Map和Set(数据结构)

一、概念 Map 和 set 是一种专门用来进行搜索的容器或者数据结构&#xff0c;其搜索的效率与其具体的实例化子类有关。 Map 和 Set 是一种适合动态查找的集合容器。 模型 一般把搜索的数据称为关键字&#xff08; Key &#xff09;&#xff0c;和关键字对应的称为值&#xff0…...

vue3uniapp实现自定义拱形底部导航栏,解决首次闪烁问题

前言&#xff1a; 我最初在网上翻阅查找了很多方法&#xff0c;发现大家都是说在page.json中tabbar中添加&#xff1a;"custom": true,即可解决首次闪烁的问题&#xff0c;可是添加了我这边还是会闪烁&#xff0c;因此我这边改变了思路&#xff0c;使用了虚拟页面来解…...

新需求编码如何注意低级错误代码

1. 日常开发常见错误问题 变量拷贝未修改变量定义的值刚开始是随意写的一个值&#xff0c;想等到上线的时候再改成正确的&#xff0c;但是上线的时候忘记改了程序常量配置的错误逻辑关系判断错误 常见的如都不为null、都不为空集合判断不为空逻辑取反了多个关系的 && …...

系统架构图设计(行业领域架构)

物联网 感知层&#xff1a;主要功能是感知和收集信息。感知层通过各种传感器、RFID标签等设备来识别物体、采集信息&#xff0c;并对这些信息进行初步处理。这一层的作用是实现对物理世界的感知和初步处理&#xff0c;为上层提供数据基础网络层&#xff1a;网络层负责处理和传输…...

windows 文件监控 c++ 11及以上版本可用

在该版本上稍微改了一下https://blog.csdn.net/weixin_50964512/article/details/125002563 #include<iostream> #include<string> #include<Windows.h> #include<list> #include<locale> using namespace std;class WatchFolder {HANDLE m_hFi…...

jsMind:炸裂项目,用JavaScript构建的思维导图库,GitHub上的热门开源项目

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和工作学习方法 jsMind 是一个基于 JavaScript 的思维导图库&#xff0c;它利用 HTML5 Canvas 和 SVG 技术构建&#xff0c;可以轻松地在网页中嵌入和编辑思维导图。它以 …...

对于做网站有什么要求/怎么建网站详细步骤

package main // 定义当前包名称 import "fmt" import "math" // 上述可以合并为 import ("fmt" "math") func main() { fmt.Println("hello ", math.Pi, "world"); //首字母大些的才会从包中导出&#xf…...

中国建设银行保函查询网站/专业搜索引擎seo公司

ibatis中使用select top #num# * from tableName出现错误。由于初次用ibatis还不知道在它里边拼写SQL语句的一些规则&#xff0c;导致一些自认为很平常的SQL语句&#xff0c;在它这里翻了船。 select top #number#这种写法是不正确的&#xff0c;原因待查。正确的书写方式是 se…...

wordpress页面加载慢/国内10大搜索引擎

PHP 8.1&#xff1a;初始化器&#xff08;new in initializers&#xff09; PHP 8.1 添加了一个看似很小的细节&#xff0c;但我认为它会对许多人产生重大的日常影响。那么这个“初始化器 RFC 中的新内容”是关于什么的&#xff1f;我们来看一个例子&#xff1b;我们都写过这样…...

如何建立网络平台/北京seo排名优化网站

Django 拾遗转载于:https://www.cnblogs.com/hellojesson/p/6489145.html...

wordpress伪静态路径写法/大数据精准营销获客

本文首先简单介绍了垃圾收集的常见方式&#xff0c;然后再分析了G1收集器的收集原理&#xff0c;相比其他垃圾收集器的优势&#xff0c;最后给出了一些调优实践。 一&#xff0c;什么是垃圾回收 首先&#xff0c;在了解G1之前&#xff0c;我们需要清楚的知道&#xff0c;垃圾回…...

wordpress 4.3.9 漏洞/百度查询关键词排名工具

* 单片机获取电容触摸屏&#xff08;7寸 800x480为例&#xff09;原理&#xff1a; 液晶屏的显示和触摸是分开的两个东西&#xff0c;分开用数据线进行传输数据的&#xff0c;也就是他们两个是没有任何关系的。 上图是液晶屏的触摸控制线应该是spi通信&#xff0c;用于返回触摸…...