Эффективно найти повторяющиеся символы в строке

Я знаю, что эффективность этого кода не является оптимальной (особенно с гигантскими входными данными), и я знаю, что есть способ изменить этот алгоритм для обработки других типов данных, а не просто для повторения в строке (очевидно, есть только такие много символов для поиска).

Есть ли способ повысить эффективность здесь?

Я попытался использовать словарь, и функция продолжала возвращать 'none', поэтому я попробовал список, и все работало нормально.

Заранее спасибо всем, кто может мне помочь!

def find_repeater(string):
    my_list = []
    my_list.append(string[0])

    for i in range (1, len(string)):

        if string[i] in my_list:
            print 'repetition found'
            return (string[i])

        else:
            my_list.append(string[i])

print find_repeater('abca')  

теперь со словарем .... (он продолжает печатать 'none' на консоли)

def find_repeater(string):
    my_dict = {}
    my_dict[0] = string[0]

    for i in range (1, len(string)):

        if string[i] in my_dict:
            print 'repetition found'
            return string[i]

        else:
            my_dict[i] = string[i]

print find_repeater('abca')