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

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://www.xdnf.cn/news/19564.html

相关文章:

  • 【高级】系统架构师 | 信息系统基础
  • 基于Seurat的空转单样本数据分析流程学习(一)
  • JavaScript中的XMLHttpRequest对象分析
  • 基于单片机智能保温杯/智能水杯
  • Java基础第7天总结(代码块、内部类、函数式编程)
  • 【多模态】使用LLM生成html图表
  • 打开多个Excel文件后快速关闭所有的文档,并且退出Excel应用
  • s[:] = reversed(s) 和 s = reversed(s)的区别
  • 【Proteus仿真】点亮小灯系列仿真——小灯闪烁/流水灯/交通灯
  • R3:适用于 .NET 的新一代响应式扩展库,事件订阅流
  • TFS-2002《Fuzzy Clustering With Viewpoints》
  • 嵌入式ARM程序高级调试技能:19.qumu arm elf无法生成coredump
  • 接口测试:如何定位BUG的产生原因
  • nginx-增加VTS模块
  • 数据结构八股
  • 数据结构(C语言篇):(八)栈
  • vscode+EIDE+Clangd环境导入keil C51以及MDK工程
  • shell脚本第六阶段---三剑客之sed
  • C++日志系统:高效异步日志实现解析
  • LeetCode 36. 有效的数独 - 解题思路与实现详解
  • ans.1中的对象标识符OBJECT_IDENTIFIER----OID
  • 【机器学习基础】决策树算法原理及其在无人驾驶技术中的应用
  • Matplotlib:让数据在Python中跳舞的魔法画笔![特殊字符]
  • 基于FPGA的正弦波和及滤波(已通过仿真和上板)
  • 如何确定虚拟机的IP
  • DVWA靶场通关笔记-SQL Injection (Impossible级别)
  • [ Android Audio 篇 ] 高通平台 Android AudioRecord 多通道录音
  • LangChain中Prompt处理机制的技术架构与核心思想分析
  • STL库——stack/queue(类函数学习)
  • 切片语法[::-1]及其可用的类型