Ich habe eine Zeichenfolge, die basierend auf der sort_fmt
sortiert werden muss. Bsp .: Wenn der String 'abdcdfs' & ist, ist die sort_fmt 'dacg'. Nach der Sortierung sollte die Ausgabe 'ddacfbs' sein. Wie Sie sehen, gibt es möglicherweise Zeichen in der Eingabezeichenfolge, die in der Reihenfolge nicht enthalten sind und umgekehrt. Die Zeichen der Eingabezeichenfolge, die in der Bestellzeichenfolge nicht vorhanden sind, sollten in beliebiger Reihenfolge am Ende der Ausgabezeichenfolge stehen.String Sortierung basierend auf einigen Format
Hier ist was ich geschrieben habe. Es funktioniert, es ist O (n * m) algo. Ich frage mich, gibt es bessere & kürzere Möglichkeiten, dies zu tun? Vielleicht itertools
verwenden?
def sort_str(s, sort_fmt):
sorted_str = ''
str_hash = dict()
# O(n)
for ch in s:
if ch in str_hash:
str_hash[ch] += 1
else:
str_hash[ch] = 1
# O(m) + O(1) where m<=n
for ch in sort_fmt:
if ch in str_hash:
cnt = str_hash[ch]
sorted_str += cnt * ch
# O(n)
for ch in s:
if ch not in sort_fmt:
sorted_str += ch
return sorted_str
if __name__ == '__main__':
print sort_str('abdcdfs', 'dacg')
O (n) sortieren? Bist du dir sicher? –