class Solution:
def findTheDifference(self, s: str, t: str) -> str:
d = {}
for c in s:
d[c] = d.get(c, 0) + 1
for c in t:
d[c] = d.get(c, 0) - 1
if d[c] < 0:
return c
class Solution:
def findTheDifference(self, s: str, t: str) -> str:
d = {}
for c in s + t:
d[c] = d.get(c, 0) + 1
return [x for x in d if d[x]%2][-1]
方法二:求和
class Solution:
def findTheDifference(self, s: str, t: str) -> str:
return chr(sum(ord(c) for c in t) - sum(ord(c) for c in s))
# 利用 Counter (标准库的 collections)
# return list(Counter(t) - Counter(s))[0]
方法三:位运算
**知识点:**chr,ord,map,reduce (functools 库),xor,ascii 码。
使用字符(注意不是字符串)异或运算 ^
- 一个数和 0 做 XOR 运算等于本身:a⊕0 = a
- 一个数和其本身做 XOR 运算等于 0:a⊕a = 0
- XOR 运算满足交换律和结合律:a⊕b⊕a = (a⊕a)⊕b = 0⊕b = b
class Solution:
def findTheDifference(self, s: str, t: str) -> str:
res = 0
for c in s + t:
res ^= ord(c)
return chr(res)
# return chr(reduce(xor, map(ord, s + t)))
166. 分数到小数
class Solution:
def fractionToDecimal(self, numerator: int, denominator: int) -> str:
flag = '' if numerator * denominator >= 0 else '-'
n, den = abs(numerator), abs(denominator)
d, r = divmod(n, den)
# res = str(d) + '.' if r else str(d)
# i, s = len(res), {}
pre = str(d) + '.' if r else str(d)
i, res, s = 0, '', {}
while r:
d, r = divmod(r * 10, den)
res += str(d)
i += 1
if r in s:
res = res[:s[r]] + "(" + res[s[r]:] + ")"
break
else:
s[r] = i
# return flag + res
return flag + pre + res



