Я работаю через Крекинг кодирвоание интервью (4-е издание), и один из вопросов заключается в следующем:В Python набор считается как буфер?
Разработка алгоритма и написать код для удаления дубликатов символов в строке без использования какого-либо дополнительного буфера , ПРИМЕЧАНИЕ. Одна или две дополнительные переменные являются точными. Дополнительной копией массива нет.
Я написал следующее решение, которое удовлетворяет все случаи испытаний, указанных автор:
def remove_duplicate(s):
return ''.join(sorted(set(s)))
print(remove_duplicate("abcd")) // output "abcd"
print(remove_duplicate("aaaa")) // output "a"
print(remove_duplicate("")) // output ""
print(remove_duplicate("aabb")) // output "ab"
ли мое использование набора в моем счете решения, как использование дополнительного буфера, или мое решение адекватно? Если мое решение не будет адекватным, что было бы лучшим способом сделать это?
спасибо!
'set' хорош для получения уникальных предметов. Но даже если порядок имеет значение, 'sorted (set (s))' не вернет начальный порядок. Напр. '. '.join (sorted (set (' abcfbcdd ')))' дает 'abcdf', хотя начальный порядок равен' abcfd' – RomanPerekhrest
Да' Set 'считается дополнительным буфером. См. Решение O (n) в ответе от @Dhruv Gairola здесь http://stackoverflow.com/questions/2598129/function-to-remove-duplicate-characters-in-a-string –