优选算法_判断字符是否唯一_C++

一.题目解析

算法一:哈希表

哈希表储存字母的种类和数量(也可以是bool)

代码实现:

cpp 复制代码
class Solution {
public:
    int hammingWeight(int n) {
        int count=0;
        for(int i=0;i<32;i++)
        {
            if(((n>>i)&1)==1)count++;
        }
        return count;
    }
};

算法二:位图

这里只有26个字母,字符-'a'变成对应的数字(0~26,a~z),1表示出现过,0表示没出现过

通过n=n|(1<<x)将该数插入位图中

代码实现

cpp 复制代码
class Solution {
public:
    bool isUnique(string astr) {
        int n=astr.size();
        if(n>26)return false;//鸽巢原理
        
        int bitmap=0;
        for(auto ch:astr)
        {
             int i=ch-'a';//字母对应数
             if(((bitmap>>i)&1)==1) return false;//判断是否相同
             bitmap|=1<<i;   
        }
        return true;
        
    }
};//位图
相关推荐
C路在脚下6 分钟前
HSMS 连接总失败?排查这 5 个配置点
c++·嵌入式硬件
金融小师妹7 分钟前
人工智能推演框架:非农降温信号如何重构黄金定价模型
数据结构·人工智能·机器学习·transformer
Turbo正则21 分钟前
群论学习入门 | 群论与李群的基本概念
人工智能·学习·算法·抽象代数
郝学胜_神的一滴22 分钟前
Qt 高级编程 034:深耕QWidget底层内核—彻底吃透无边框窗口设计核心原理
c++·qt
sugar__salt30 分钟前
手撕字符串算法:反转、回文、验证回文 Ⅱ 完整拆解
javascript·算法·面试·职场和发展
rebibabo30 分钟前
Java基础(番外) | Kafka 入门:分区、副本与消费者组原理
java·分布式·kafka·学习笔记·副本·分区·异步日志
Flittly32 分钟前
【AgentScope Java新手村系列】(17)长期记忆系统
java·spring boot·spring
wei19862133 分钟前
.net添加web引用和添加服务引用有什么区别?
java·前端·.net
To_OC35 分钟前
从一行报错开始,把字符串反转、回文算法连带着包装类一起捋明白
javascript·算法·api
Full Stack Developme36 分钟前
正则表达式的使用教程
java·数据库·正则表达式