letcode 第三题 判定字符是否唯一
实现一个算法,确定一个字符串 s
的所有字符是否全都不同。
示例 1:
输入: s = "leetcode" 输出: false
示例 2:
输入: s = "abc" 输出: true
方法一:
使用一个简单的count()函数,统计每一个单词的数字,再来判断。(Set也同理,字典也行,列表也行)
class Solution: def isUnique(self, astr: str) -> bool: for i in astr: if astr.count(i)>1: return False return True
字典使用的是
def isUnique(self, astr: str) -> bool:
adict={}
for value in astr:
if value in adict.keys():
return False
else:
adict[value]=0
return True
class Solution:
def isUnique(self, astr: str) -> bool:
return len(astr)== len(set(astr))
方法二:
使用位运算。
我们可以使用一个int类型的变量(下文用mark表示)来代替长度为26的bool数组。假设这个变量占26个bit(在多数语言中,这个值一般不止26)。
那么我们可以把它看成000...00(26个0),这26个bit对应着26个字符,对于一个字符c,检查对应下标的bit值即可判断是否重复。
学到了。
class Solution: def isUnique(self, astr: str) -> bool: mark = 0 for char in astr: move_bit = ord(char) - ord('a') if (mark & (1 << move_bit)) != 0: return False else: mark |= (1 << move_bit) return True。
作者:zhen-zhu-hao-hao-chi
链接:https://leetcode-cn.com/problems/is-unique-lcci/solution/wei-yun-suan-fang-fa-si-lu-jie-shao-by-zhen-zhu-ha/
来源:力扣(LeetCode)