Easy interview coding question:
Given a string, find the first character that appears only once.
The input is this string, and the correct result is 'z'
letters = "asdzfasdfrasfy"
import collections
letter_counts = collections.Counter(letters)
print letter_counts
Counter({'a': 3, 'f': 3, 's': 3, 'd': 2, 'r': 1, 'y': 1, 'z': 1})
# Now that we have the count of each letter, we will select those letters which appear only once.
single_letters = [k for k, v in letter_counts.iteritems() if v == 1]
print single_letters
['r', 'y', 'z']
# Finally, we select the first letter from the input letters that appears once
for letter in letters:
if letter in single_letters:
print letter
break
z
# Second method -- Using a list to store singletons and moving them to a set if encountered again (1 pass)
single_letters = []
multi_letters = set([])
for letter in letters:
if letter not in single_letters + list(multi_letters):
single_letters.append(letter)
elif letter in single_letters:
single_letters.remove(letter)
multi_letters.add(letter)
print single_letters[0]
z