题目
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.
总结
思路:使用一个字典,遍历两个字符串,前一个出现+1,后一个出现-1。最后字典中不等于0的key就是答案
代码:
class Solution:
def findTheDifference(self, s, t):
"""
:type s: str
:type t: str
:rtype: str
"""
dict = collections.defaultdict(lambda:0)
for c1,c2 in zip(s,t):
dict[c1] += 1
dict[c2] -= 1
dict[t[-1]] -= 1
for k,v in dict.items():
if v != 0:
return k
然而,实际上不需要在所有运算结束后才知道答案,先处理第一个字符串每个+1,在处理后一个字符串的过程中(每出现一次-1),有以下情况可以提前发现答案:
1.字符串在字典中的值已经为0
2.字符串不存在于字典中
代码:
class Solution:
def findTheDifference(self, s, t):
"""
:type s: str
:type t: str
:rtype: str
"""
word_dict = {}
for char in s:
if char in word_dict:
word_dict[char] += 1
else:
word_dict[char] = 1
for char in t:
if char in word_dict:
if word_dict[char] == 0:
return char
else:
word_dict[char] -= 1
else:
return char