1.创建一个history记录出现过的字符,使用另一个list储存是否只出现一次。如果再次出现则从list中删除,最后返回list[0]

# -*- coding:utf-8 -*-
class Solution:
    def FirstNotRepeatingChar(self, s):
        # write code here
        s_history = []
        first_s = []
        first_index = []
        for i in range(len(s)):
            if s[i] not in s_history:
                first_s.append(s[i])
                first_index.append(i)
                s_history.append(s[i])
            elif s[i] in first_s:
                index = first_s.index(s[i])
                first_s.pop(index)
                first_index.pop(index)
        return first_index[0] if first_index else -1

2.使用harsh表,利用字符的ASCLL码作为key。value记录其出现的次数。

# -*- coding:utf-8 -*-
class Solution:
    def FirstNotRepeatingChar(self, s):
        # write code here
        s_ascll = {}
        for i in range(len(s)):
            if ord(s[i]) in s_ascll:
                s_ascll[ord(s[i])][0] += 1
            else:
                s_ascll[ord(s[i])] = [1, i]

        for i in range(len(s)):
            if s_ascll[ord(s[i])][0] == 1:
                return s_ascll[ord(s[i])][1]
        return -1