天天看點

LeetCode 387. 字元串中的第一個唯一字元

題目

給定一個字元串,找到它的第一個不重複的字元,并傳回它的索引。如果不存在,則傳回 -1。

示例:

s = "leetcode"
傳回 0

s = "loveleetcode"
傳回 2
           

提示:你可以假定該字元串隻包含小寫字母。

解題思路

class Solution:
    def firstUniqChar(self, s: str) -> int:
        # #通過内置函數in來實作
        # sList = list(s)
        # if len(s) == 1:return 0#處理1個字元串的異常情況
        # for i in range(len(s)):
        #     if (sList[i] not in sList[i+1:]) and (sList[i] not in sList[:i]):
        #         return i
        # return -1
        # #字典實作
        # wordsList = [chr(i) for i in range(97, 97+26)]
        # valueList = [0]*26
        # wordsDic = dict(zip(wordsList, valueList))
        # sList = list(s)
        # if len(s) == 1: return 0  # 處理1個字元串的異常情況
        # for i in range(len(s)):
        #     wordsDic[sList[i]] += 1
        # for i in range(len(s)):
        #     if wordsDic[sList[i]] == 1:
        #         return i
        # return -1
        #取巧方法,左右周遊如果找到的索引是相同,代表隻有一個字母
        for i in s:
            if s.find(i) == s.rfind(i):
                return s.find(i)
        return -1           

繼續閱讀