力扣(leetcode) 389. 找不同 (哈希表法) (ascll码法)
原创
©著作权归作者所有:来自51CTO博客作者深度不学习的原创作品,请联系作者获取转载授权,否则将追究法律责任
题目在这:https://leetcode-cn.com/problems/find-the-difference/
法一:
用字符串S建立哈希表,元素为key,出现次数为val。
然后遍历字符串T,如果T中字符不在哈希表中,或者出现次数大于S中出现次数(即哈希表中key对应的val为负数),则失败。
完整代码
class Solution:
def findTheDifference(self, s: str, t: str) -> str:
from collections import Counter
hash_map = Counter(s)
for i in t:
if i in hash_map:
hash_map[i] -=1
if hash_map[i] <0:
return i
else:
return
法二:
因为仅仅添加了一个元素,所以字符串中ascll码之和再相减,就是新加的那个字符的ascll码。再转换成字符返回就行了 。
完整代码
class Solution:
def findTheDifference(self, s: str, t: str) -> str:
return chr(sum(map(ord, t))-sum(map(ord,s)))
其中 :
ord :字符串转ascll码
chr :ascll码转字符串