This notebook was prepared by Donne Martin. Source and license info is on GitHub.
Complexity:
class Solution(object):
def find_diff(self, s, t):
if s is None or t is None:
raise TypeError('s or t cannot be None')
seen = {}
for char in s:
if char in seen:
seen[char] += 1
else:
seen[char] = 1
for char in t:
try:
seen[char] -= 1
except KeyError:
return char
if seen[char] < 0:
return char
return None
%%writefile test_str_diff.py
import unittest
class TestFindDiff(unittest.TestCase):
def test_find_diff(self):
solution = Solution()
self.assertRaises(TypeError, solution.find_diff, None)
self.assertEqual(solution.find_diff('aaabbcdd', 'abdbacade'), 'e')
print('Success: test_find_diff')
def main():
test = TestFindDiff()
test.test_find_diff()
if __name__ == '__main__':
main()
Overwriting test_str_diff.py
%run -i test_str_diff.py
Success: test_find_diff