【Leetcode每日一题】 位运算 - 面试题 01.01. 判定字符是否唯一(难度⭐)(33)

1.题目解析

题目链接:面试题 01.01. 判定字符是否唯一

这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。

核心在于判断题目所给字符串是否存在相同字母,存在返回false即可,不存在返回true即可。

2.算法原理

利用位图思想表示字符出现状态

  1. 位图思想概述
    位图(Bitmap)是一种利用二进制位来表示特定数据状态的数据结构。在字符统计中,我们可以利用位图的思想,将每个比特位(bit)对应一个字符,以此来记录字符是否出现过。

  2. 字符与比特位的映射
    假设我们用一个int类型的变量来表示位图,由于int类型通常有32位,因此足够用来表示所有小写字母(从'a'到'z',共26个)。每个比特位对应一个小写字母,如果比特位的值为0,表示该字符没有出现过;如果值为1,表示该字符出现过。

  3. 实现字符哈希表
    利用这种映射关系,我们可以将一个int类型的变量视作一个简单的哈希表,用于快速判断某个字符是否出现过。这种方法比传统的哈希表更加紧凑,因为它只使用了固定数量的内存(一个int的大小),且无需动态分配内存。

3.代码实现

class Solution 
{
public:
    bool isUnique(string astr) 
    {
        int size = astr.size();
        if(size > 26)
            return false;
        for(int i = 0, flg = 0; i < size; i++)
        {
            if((flg >> (astr[i] - 'a')) & 1)
                return false;
            //flg = (flg >> (astr[i] - 'a')) | 1;
            flg |= (1 << (astr[i] - 'a'));
        }
        return true;
    }
};

写在最后

嗯,就是这样啦,文章到这里就结束啦,真心感谢你花时间来读。

觉得有点收获的话,不妨给我点个吧!

如果发现文章有啥漏洞或错误的地方,欢迎私信我或者在评论里提醒一声~ 

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-12 23:18:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-12 23:18:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-12 23:18:02       82 阅读
  4. Python语言-面向对象

    2024-03-12 23:18:02       91 阅读

热门阅读

  1. Ansible

    Ansible

    2024-03-12 23:18:02      34 阅读
  2. ZZU天梯选拔赛复盘

    2024-03-12 23:18:02       35 阅读
  3. 2015-2023_个人工作总结

    2024-03-12 23:18:02       38 阅读
  4. Vue - v-if和v-else-if和v-else的使用

    2024-03-12 23:18:02       44 阅读
  5. 使用vue 实现跨域访问第三方http请求

    2024-03-12 23:18:02       40 阅读
  6. Python基础语法:基本数据类型(列表)

    2024-03-12 23:18:02       35 阅读
  7. 第一次Python小练习题目

    2024-03-12 23:18:02       55 阅读