У меня есть решение в python, чтобы найти строку с уникальными символами.
def is_unique_with_ascii(string):
if len(string) > 128:
return False
char_set = [False] * 128
for char in string:
val = ord(char)
if char_set[val]:
print(char_set[val])
return False
char_set[val] = True
return True
В этом коде char_set был инициализирован ложными значениями. Но в операторе if, когда тот же символ, который уже был в строке, пойманный оператором, становится истинным, это означает, что char_set[val] получил истинное значение. Мой вопрос в python, как если оператор char_set[val]: работает, чтобы получить то же значение. Пожалуйста, помогите мне.
В вашем коде есть большая ошибка, он не будет работать с любым символом, имеющим ord
больше 127.
Каков именно ваш вопрос? Вы хотите напечатать символ, который встречается более одного раза?
Если строка содержит уникальные символы, она вернет true, иначе false.
Глядя на документация для if
, он оценивает условие, которым в данном случае является char_set[val]
. Поскольку он уже возвращает Bool
, оператор if
оценивает его сразу, чтобы создать впечатление, что «Утверждение if char_set[val]
работает, чтобы получить то же значение»
Большое спасибо за разъяснения.
Хорошо, я проверил.
if len(string)==len(set(string))