Мой код предназначен для идентификации первых неповторяющихся строковых символов, пустых строк, повторяющихся строк (то есть abba
или aa
), но также предназначен для обработки ввода нижнего и верхнего регистра как тот же символ, возвращая точный не повторяющийся символ в его входной регистр.Как игнорировать капитализацию, но возвратите ту же самую заглавную запись, что и вход
def first_non_repeat(string):
order = []
counts = {}
for x in string:
if x in counts and x.islower() == True:
counts[x] += 1
else:
counts[x] = 1
order.append(x)
for x in order:
if counts[x] == 1:
return x
return ''
Моя логика в строке 5 в том, что если я сделаю все буквенные входы в нижнем регистре, то он будет перебирать строковый и не отличить от случая. Но на данный момент, сделайте ввод 'sTreSS'
, и вывод 's'
, когда мне действительно нужен 'T'
. Если последние два S
были в нижнем регистре, то это было бы 'T'
, но мне нужен код, достаточно гибкий для обработки ввода любого случая.
Дело в том, что 'if x in counts' будет искать' x' только в случае, чувствительном к регистру. –
Право, я хочу, чтобы это заявление игнорировалось при поиске x –
Любые новости? Ниже я разместил альтернативное решение на основе регулярных выражений. –