Это вопрос LeetCode:

Для заданной строки найдите в ней первый неповторяющийся символ и верните его индекс. Если он не существует, верните -1.

Примеры:

s = leetcode
возвращает 0.

s = loveleetcode,
вернуть 2.

Примечание. Вы можете предположить, что строка содержит только строчные буквы.

Это интересный вопрос, который можно решить, используя dictionary в Python.

Позвольте мне сначала объяснить мое неправильное решение, но это решение может решить проблему, то есть найти первый повторяющийся символ во входной строке и вернуть его индекс.

        check = {}
        
        for i in range(len(s)):
            if s[i] in check:
                if check[s[i]] == 1:
                    return i
            else:
                check[s[i]] = 1

Ну, в начале я продолжаю заставлять себя думать таким образом, чтобы использовать dictionary, который содержит key-value типов, где key — проверенный символ, если он есть, и оцениваю количество вхождений этого ключа на данный момент. Однако на самом деле для решения этой проблемы лучше использовать dictionary дважды.

Во-первых, я сохраняю последовательность символов входной строки в объект check dictionary. Здесь я использую метод dict.get(), который возвращает значение для данного ключа. Если ключ не может быть найден в объекте dict, возвращается значение по умолчанию (по умолчанию — None). Таким образом, первый цикл for сохраняет встречающиеся символы и соответствующие им частоты. Второй цикл состоит в том, чтобы снова перебрать последовательность строк, если следующий символ существует и количество вхождений равно 1, а затем вернуть индекс этого символа. В противном случае возвращает -1. Используя этот метод, мы находим первый уникальный символ в строке.

class Solution(object):
    def firstUniqChar(self, s):
        """
        :type s: str
        :rtype: int
        """
        check = {}
        
        for elem in s:
            check[elem] = check.get(elem, 0) + 1
            
        for i, n in enumerate(s):
            if check[n] and check[n] == 1:
                return i
        
        return -1