Given two strings s and t which consist of only lowercase letters.
String t is generated by random shuffling string s and then add one more letter at a random position.
Find the letter that was added in t.
Example:
Input: s = "abcd" t = "abcde" Output: e Explanation: 'e' is the letter that was added.My code:
class Solution(object):
def findTheDifference(self, s, t):
"""
:type s: str
:type t: str
:rtype: str
"""
if len(s)==0:
return t[0]
sNum = [ord(i) for i in s]
tNum = [ord(i) for i in t]
sNum.sort()
tNum.sort()
for i in range(len(sNum)):
if sNum[i]!=tNum[i]:
return chr(tNum[i])
return chr(tNum[i+1])
Another idea:
class Solution(object):
def findTheDifference(self, s, t):
"""
:type s: str
:type t: str
:rtype: str
"""
c=0
for i in range(len(s)):
c ^=ord(s[i])
c ^=ord(t[i])
c ^=ord(t[len(t)-1])
return chr(c)
Reference
class Solution(object):
def findTheDifference(self, s, t):
return chr(reduce(operator.xor, map(ord, s + t)))
class Solution(object):
def findTheDifference(self, s, t):
return list((collections.Counter(t) - collections.Counter(s)))[0]
class Solution(object):
def findTheDifference(self, s, t):
s, t = sorted(s), sorted(t)
return t[-1] if s == t[:-1] else [x[1] for x in zip(s, t) if x[0] != x[1]][0]
Note: map,reduce, zip