Нужно оптимизировать код при работе с длинной строкой в Python3
Это задание с Codewars.com
Вам предоставлена строка ввода. Для каждого символа в строке, если это первый встречающийся символ, замените его на "1", в противном случае замените его на количество раз, которое вы уже видели.
Примеры:
input = "Hello, World!" result = "1112111121311" input = "aaaaaaaaaaaa" result = "123456789101112"
В строке могут содержаться некоторые символы, отличные от
ascii
.
Моё решение
s = "Hello, World!"
s = '˟ŕ̃Œ̲ɑʕξTȽDZό͈NjΆ̚ΛFȉ̲ɞįɾĹƼg͇πDzʛ˙ȚFŽ˕;ǐ˂¹˝ə˱ʊƷˈǎͳ˳ƦrΞ˪héΡ˸ɌǟʃćȍǸ»İ˕˰ͨˇɆɱ;ʣ˅Rȅ͆ϣƵ̷Ͱ,§KΔΈêȈƄƪʽˉΥδ\µǟ˘ϧvɚ(nj˶Ƨɪ'
def numericals(s):
return ''.join('1' if s.count(v, 0, i + 1) == 1 else str(s.count(v, 0, i + 1)) for i, v in enumerate(s))
return ''.join('1' if s.count(s[i], 0, i + 1) == 1 else str(s.count(s[i], 0, i + 1)) for i in range(len(s)))
return ''.join('1' if s[0:i + 1].count(s[i: i + 1]) == 1 else str(s[0:i + 1].count(s[i: i + 1])) for i in range(0, len(s), 1))
print(numericals(s))
return
смотреть снизу - это первое решение - потом второе и третье с enumerate()
- последнее
это вроде как моя "ОПТИМИЗАЦИЯ"
Random Tests
random tests - short strings
(20 of 20 Assertions)
random tests - longer strings
(8 of 8 Assertions)
А далее
Execution Timed Out (12000 ms)
Подскажите как сделать оптимизацию и не получить тайм-аут?