实现一个算法,确定一个字符串 s 的所有字符是否全都不同。
image.png
解题思路:
- 思路一:字典存储;
- 思路二:位运算,astr包含了26个字母,用26位的二进制存储,变化范围为
;
|
或操作用于对某一位赋值;&
与操作用于判断mask中某一位是否出现过,若出现过,&
后结果大于0。
Python3代码:
class Solution:
def isUnique(self, astr: str) -> bool:
# ans = {}
# for i in range(len(astr)):
# if astr[i] in ans:
# return False
# else:
# ans[astr[i]] = 1
# return True
# 位运算
mask = 0
for c in astr:
if mask & (1<<ord(c)-ord('a')) != 0:
return False
else:
mask |= 1<<ord(c) - ord('a')
return True
网友评论