I read of a job interview question to write some code for the following:
Write an efficient function to find the first nonrepeated character in
a string. For instance, the first nonrepeated character in “total” is
'o' and the first nonrepeated character in “teeter” is 'r'. Discuss
the efficiency of your algorithm.
I came up with this solution in Python; but, I'm sure that there are way more beautiful ways of doing it.
word="googlethis"
dici={}
#build up dici with counts of characters
for a in word:
try:
if dici[a]:
dici[a]+=1
except:
dici[a]=1
# build up dict singles for characters that just count 1
singles={}
for i in dici:
if dici[i]==1:
singles[i]=word.index(i)
#get the minimum value
mini=min(singles.values())
#find out the character again iterating...
for zu,ui in singles.items():
if ui==mini:
print zu
Is there a more concise and efficient answer?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…