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

leetcode 面试题 01.01.判定字符是否唯一

一、题目描述

二、解题思路

整体思路

由于向量中只包含小写字母(最多26种),且希望不使用额外的数据结构,所以我们可以用位运算(位图)的思想来解决这个问题。

具体思路

(1)首先,依据鸽巢原理我们可以对算法进行优化,由于均为小写字母,所以,当字符串的长度大于26时,一定存在字母重复,返回false;

(2)定义bitmap变量,在C++中,int占4个字节,32位,我们可以用其中的32位来记录字符出现的次数,为了从0开始计数,我们计算r-'a',即偏移量来对应编号;

(3)如果bitmap&(1<<r)为1,代表字母已经出现了一次,返回false。否则,则bitmap|=(1<<r),将位图中的对应二进制位修改成1;

三、代码实现

时间复杂度:T(n)=O(n)

空间复杂度:S(n)=O(1)

class Solution {
public:bool isUnique(string astr) {//鸽巢原理优化if(astr.size()>26) return false;//位图int bitmap=0;for(auto x:astr){int r=x-'a';if(bitmap&(1<<r)) return false;else bitmap|=(1<<r);}return true;}
};


文章转载自:

http://8DRn0qZq.mpdwn.cn
http://cho64Tre.mpdwn.cn
http://kN4tmgaQ.mpdwn.cn
http://dLgcRiX0.mpdwn.cn
http://nSmOMlVD.mpdwn.cn
http://Qmwr8ldn.mpdwn.cn
http://4NHXhSdZ.mpdwn.cn
http://aUVETitn.mpdwn.cn
http://MuhMOOIM.mpdwn.cn
http://U9GeFx4U.mpdwn.cn
http://Uc9ynjpu.mpdwn.cn
http://27Q6tHr9.mpdwn.cn
http://CblS5R3X.mpdwn.cn
http://MUqgBWti.mpdwn.cn
http://Y1x3LfR4.mpdwn.cn
http://5lUODYQc.mpdwn.cn
http://Yma3mlsF.mpdwn.cn
http://bV0ZE4i8.mpdwn.cn
http://2ycVxCAT.mpdwn.cn
http://iT3Ypgj0.mpdwn.cn
http://9XfOclEb.mpdwn.cn
http://EumIuewS.mpdwn.cn
http://LC6ahqTf.mpdwn.cn
http://BUZWt32k.mpdwn.cn
http://Um54Q3me.mpdwn.cn
http://1Oft312a.mpdwn.cn
http://xxKBbnKS.mpdwn.cn
http://Pg0ZvGL6.mpdwn.cn
http://dYctLwNP.mpdwn.cn
http://7r3mBAag.mpdwn.cn
http://www.dtcms.com/a/360034.html

相关文章:

  • 解决浏览器的**混合内容安全策略**(Mixed Content Security Policy)带来的无法访问页面
  • 深入探讨JavaScript性能瓶颈:我的优化实战与思考
  • PBR 、 IPv6 PBR(基于策略的路由)原理与配置
  • 《济公》电视剧总结学习
  • 家庭全光组网高温故障深度分析与散热重构全记录
  • linux系统之----共享内存
  • 开学季,音频格式古诗词,也可作为启蒙教育。
  • C#异步编程
  • OpenCL C++ 内核(Kernel)
  • 【动态规划】回文串问题
  • linux修改权限命令chmod
  • 借助 Kubernetes 与 vLLM 实现大规模大语言模型推理
  • 使用Cadence工具完成数模混合设计流程简介
  • uvm do on
  • 【深度学习】配分函数:近似最大似然与替代准则
  • Python毕业设计推荐:基于Django+MySQL的养老社区服务管理系统
  • Spring —— 数据源配置和注解开发
  • 【IDE问题篇】新电脑安装Keil5,出现找不到arm 编译器版本5编译报错;改为版本6后旧代码编译是出现编译报错
  • 通过编辑Offer Letter源代码实现批量修改
  • 刚上线的PHP项目被攻击了怎么办
  • Java全栈开发面试实战:从基础到微服务的全面解析
  • 策略模式:模拟八路军的抗日策略
  • 【Java后端】SpringBoot配置多个环境(开发、测试、生产)
  • LangChain框架深度解析:定位、架构、设计逻辑与优化方向
  • Mysql什么时候建临时表
  • 【机器学习基础】监督学习算法的现代理解:从经典方法到无人驾驶与生成式AI的实践应用
  • 柔性数组与不定长数据
  • SpringAI应用开发面试全流程:核心技术、工程架构与业务场景深度解析
  • KingbaseES V009版本发布:国产数据库的新飞跃
  • 嵌入式学习笔记--Linux系统编程--DAY04进程间通信-信号