class Solution:
def isUnique(self, astr: str) -> bool:
#return len(set(astr))==len(astr)
#位运算
mark = 0
for i in astr:
#移动的位数
move = ord(i)-ord('a')
#如果移动后与mark取与运算不等于0,那就说明有相同的位置,有重复的字母出现
#否则更新mark就是与移动后的取或运算
if(mark&1<<move)==0:
mark|=(1<<move)
else:
return False
return True
#hash表
if not astr:
return True
dic = dict()
for i in astr:
dic[i] = dic.get(i,0)+1
return max(dic.values())==1
class Solution:
def CheckPermutation(self, s1: str, s2: str) -> bool:
if len(s1)!=len(s2):
return False
dic1 = collections.defaultdict(int)
dic2 = collections.defaultdict(int)
for i in s1:
dic1[i]+=1
for i in s2:
dic2[i]+=1
return dic1==dic2
总结:字符串唯一用位元素真是比较脑洞大开的一个题目,第二题就是比较简单的比较了两个hash表是否相同。