Помогите с решением задачи (преобразование строки) Python

from collections import Counter
def duplicate_encode(word):
    cnt = dict(Counter(word.lower()))
    str = ''
    for i in word:
        if i in cnt:
            if cnt[i] < 2:
                str += '('
            else:
                str += ')'
    return str

The goal of this exercise is to convert a string to a new string where each character in the new string is "(" if that character appears only once in the original string, or ")" if that character appears more than once in the original string. Ignore capitalization when determining if a character is a duplicate.

Examples "din" => "((("

"recede" => "()()()"

"Success" => ")())())"

"(( @" => "))(("


Ответы (2 шт):

Автор решения: hellog888
from collections import Counter
def duplicate_encode(word):
    cnt = dict(Counter(word.lower()))
    str = ''
    for i in word.lower():
        if i in cnt:
            if cnt[i] == 1:
                str += '('
            else:
                str += ')'
    return str

Почему то вот здесь for i in word.lower(): не понятно для меня почему нужно было дописать .lower()

→ Ссылка
Автор решения: NickName11
def duplicate_encode(word):
    word = word.lower()
    dict = {}
    for letter in word:
        if letter not in dict:
            dict[letter] = '('
        else:
            dict[letter] = ')'
    str = ''
    for i in word:
        str += dict[i]
    return str
→ Ссылка