跳转至

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

问题描述#

实现一个算法,确定一个字符串 s 的所有字符是否全都不同。

示例 1:

输入: s = "leetcode"
输出: false 

示例 2:

输入: s = "abc"
输出: true

限制:

  • 0 <= len(s) <= 100
  • 如果你不使用额外的数据结构,会很加分。

解题思路#

用一个数的二进制表示的每一位来存储字符出现的情况,题目中虽然没有给出,但是经测试都是小写字母。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
class Solution:
    def isUnique(self, astr: str) -> bool:
        b = 0 # 初始为 0 表示所有字符都未曾出现
        for c in astr:
            i = ord(c) - 97 # 第 i 位 表示字符 c 的 出现情况
            if (b >> i) & 1: # 第 i 位 为 1,表示该字符 c 曾出现过
                return False
            else:
                b |= 1 << i # 将第 i 位设置为 1
        return True
  • 其他方法
1
2
3
class Solution:
    def isUnique(self, astr: str) -> bool:
        return len(astr) == len(set(astr))
返回顶部

在手机上阅读