优选算法_判断字符是否唯一_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;
        
    }
};//位图
相关推荐
Zella折耳根5 小时前
复习篇-常用实用类
java
Zhan8611245 小时前
数据接口的序列号机制与丢包检测:西班牙行情数据IBEX指数实时行情接入笔记
大数据·数据结构·笔记·区块链
菜鸡爱玩7 小时前
线性代数矩阵相乘
线性代数·算法·矩阵
devilnumber11 小时前
Java 递归算法 详解 + 核心要点 + 实战运用 + 避坑指南
java·开发语言·算法
unicrom_深圳市由你创科技12 小时前
哪些控制逻辑应该放在 PLC,哪些放在上位机?
c++
asdfg125896313 小时前
JavaBean是什么?怎么理解?有什么用途?
java·开发语言
dsyyyyy110113 小时前
JavaScript变量
开发语言·javascript·ecmascript
‎ദ്ദിᵔ.˛.ᵔ₎13 小时前
双指针、滑动窗口、前缀和、二分查找 算法
算法
顾北顾13 小时前
多头注意力机制
人工智能·深度学习·算法
H1785350909613 小时前
SolidWorks_基于草图的实体特征20_特征错误排查
算法·3d建模·solidworks