题目:
You are given two strings s and t.
String t is generated by random shuffling string s and then add one more letter at a random position.
Return the letter that was added to t.
给定两字串s和t,已知t为s加上一个字元重组而成,找出那个字元
较直观的解法如下
class Solution: def findTheDifference(self, s: str, t: str) -> str: for i in t: if i not in s: return i else: s=s.replace(i,"",1)
一个一个看t的元素是否在s内
若在则将一个在s内的该元素移除
反之则代表我们找到了多出的那个字元,回传它
最后执行时间33ms(faster than 95.91%)
也能用位元运算的^来解
class Solution: def findTheDifference(self, s: str, t: str) -> str: ans=0 for i in t: ans=ans^ord(i) for i in s: ans=ans^ord(i) return chr(ans)
设定ans=0
将s,t内所有字元转为ASCII编码,和ans行^运算(0^x=x,x^x=0)
运用^的交换律,最后的运算结果即为多出的那个字元的ASCII编码
将其转换为字元后回传
最后执行时间33ms(faster than 95.91%)
那我们下题见