第一个只出现一次的字符

描述: 在一个长为 字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)

数据范围:0≤n≤10000,且字符串只有字母组成。 要求:空间复杂度 O(n),时间复杂度 O(n)

思路:遍历字符串,把字母存入数组,并记录位置,如果字母在数组中出现过,将位置记为-1,不用再存入数组。最后遍历数组,将第一个位置不为-1的返回。如果没有,返回-1。

# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param str string字符串 
# @return int整型
#
class Solution:
    def FirstNotRepeatingChar(self , str: str) -> int:
        # write code here
        str_arr = {}
        for i in range(len(str)):
            if str[i] in str_arr:
                str_arr[str[i]] = -1
            else:
                str_arr[str[i]] = i
        for i in str_arr:
            if str_arr[i] != -1:
                return str_arr[i]
        return -1