国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Python3】【力扣題】387. 字符串中的第一個唯一字符

這篇具有很好參考價值的文章主要介紹了【Python3】【力扣題】387. 字符串中的第一個唯一字符。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【力扣題】題目描述:

【Python3】【力扣題】387. 字符串中的第一個唯一字符,力扣題,leetcode,python

【Python3】代碼:

1、解題思路:遍歷字符串,依次判斷元素在字符串中的個數(shù)是否為1,第一個為1的返回該元素的索引號,若整個字符串都沒有個數(shù)為1的,則返回-1。

知識點:enumerate(序列):返回可迭代的序列中所有索引號和對應(yīng)元素,元組形式 (索引,?元素)。

? ? ? ? ? ? ? 序列.count(...):統(tǒng)計某元素在序列中的個數(shù)。

class Solution:
    def firstUniqChar(self, s: str) -> int:
        for i,x in enumerate(s):
            if s.count(x) == 1:
                return i
        return -1

2、解題思路:使用計數(shù)器統(tǒng)計出字符串中所有元素及其個數(shù),再次遍歷字符串,依次判斷元素在計數(shù)器中的個數(shù)是否為1,若是,返回索引,若整個字符串都沒有個數(shù)為1的,則返回-1。

知識點:collections.Counter(...):計數(shù)器,字典子類。統(tǒng)計序列中元素及其出現(xiàn)個數(shù)。

? ? ? ? ? ? ? 字典[鍵]:獲取字典中鍵對應(yīng)的值?;蛐薷逆I對應(yīng)的值:字典[鍵]=值。

class Solution:
    def firstUniqChar(self, s: str) -> int:
        import collections
        adict = collections.Counter(s)
        for i,x in enumerate(s):
            if adict[x] == 1:
                return i
        return -1

3、(1)解題思路:使用字典統(tǒng)計出字符串中所有元素及其第一次出現(xiàn)的索引,若重復(fù)出現(xiàn),則該元素在字典中對應(yīng)的值為-1;再次遍歷字典的所有值,在不是-1的值中找出最小的索引號,若沒有,返回-1。

知識點:dict():創(chuàng)建空字典。即{ }。

? ? ? ? ? ? ? len(序列):獲取序列的長度。

? ? ? ? ? ? ? 字典.values():返回可迭代的字典中的所有值。

class Solution:
    def firstUniqChar(self, s: str) -> int:
        adict = dict()
        n = len(s)
        for i,x in enumerate(s):
            if x in adict:
                adict[x] = -1
            else:
                adict[x] = i
        first = n
        for i in adict.values():
            if i != -1 and i < first:
                first = i
        if first == n:
            return -1
        return first

?(2)解題思路:使用字典統(tǒng)計出字符串中所有元素及其第一次出現(xiàn)的索引,若重復(fù)出現(xiàn),則該元素在字典中對應(yīng)的值為字符串總長度加索引(方便后面獲取最小值);再次遍歷字典的所有值,找出最小的索引號。

知識點:min(...):獲取最小值。

class Solution:
    def firstUniqChar(self, s: str) -> int:
        adict = dict()
        n = len(s)
        for i,x in enumerate(s):
            if x in adict:
                adict[x] = i + n
            else:
                adict[x] = i
        result = min(adict.values())
        return -1 if result > n else result

4、解題思路:使用字典統(tǒng)計出字符串中所有元素及其第一次出現(xiàn)的索引,若重復(fù)出現(xiàn),則該元素在字典中對應(yīng)的值為-1;使用隊列依次以元組形式記錄元素及其第一次出現(xiàn)的索引號,若是重復(fù)的元素從隊列移除。最終隊列為空,則返回-1,否則返回隊列第一個元素中記錄的索引號。

知識點:collections.deque():雙端隊列。左端進(jìn),右端出。也可以右端進(jìn),左端出。

? ? ? ? ? ? ??隊列.append():從隊尾(右端)添加一個元素。

? ? ? ? ? ? ? 隊列.popleft():從隊頭(左端)移除一個元素,并返回該元素。

class Solution:
    def firstUniqChar(self, s: str) -> int:
        import collections
        adict = dict()
        n = len(s)
        q = collections.deque()
        for i,x in enumerate(s):
            if x not in adict:
                adict[x] = i
                q.append((s[i],i))
            else:
                adict[x] = -1
                while q and adict[q[0][0]] == -1:
                    q.popleft()
        return -1 if not q else q[0][-1]

5、解題思路:從字符串中依次篩選出所有出現(xiàn)次數(shù)為1的元素,列表形式記錄,若空列表,則沒有不重復(fù)的元素,返回-1,否則返回列表中第一個元素在字符串中對應(yīng)的索引號?!驹摲椒ǔ鰰r間限制】

知識點:filter(predict,?可迭代對象):返回一個迭代器。篩選出所有符合條件的元素。

? ? ? ? ? ? ? lambda:匿名函數(shù)。

??????????????序列.index(...):獲取元素在序列中的索引號。

? ? ? ? ? ? ? 序列[索引]:獲取序列中索引號對應(yīng)的元素。

class Solution:
    def firstUniqChar(self, s: str) -> int:
        # 超出時間限制
        alist = list(filter(lambda x:s.count(x)==1,s))
        return -1 if len(alist)==0 else s.index(alist[0])

改進(jìn):遍歷字符串,依次判斷元素出現(xiàn)的次數(shù)是否為1,從字符串中過濾掉不滿足條件的元素,獲取第一個滿足條件的元素及之后所有元素,列表形式記錄,若空列表,則返回-1,否則返回列表中第一個元素在字符串中對應(yīng)的索引號。

知識點:itertools.dropwhile(predict,?可迭代對象):返回一個迭代器。依次遍歷可迭代對象,不滿足條件的內(nèi)容去除,第一個滿足條件的內(nèi)容及其之后所有內(nèi)容全部返回。文章來源地址http://www.zghlxwxcb.cn/news/detail-799963.html

class Solution:
    def firstUniqChar(self, s: str) -> int:
        import itertools
        alist = list(itertools.dropwhile(lambda x:s.count(x)!=1, s))
        return -1 if len(alist)==0 else s.index(alist[0])

到了這里,關(guān)于【Python3】【力扣題】387. 字符串中的第一個唯一字符的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 字符串中的第一個唯一字符

    字符串中的第一個唯一字符

    ?這段代碼的作用是在一個字符串 s 中找到第一個不重復(fù)(只出現(xiàn)一次)的字符,并返回它的下標(biāo)。具體實現(xiàn)方式如下: 定義變量 i 表示當(dāng)前處理的字符下標(biāo),定義字符串 rem 表示已經(jīng)檢查過的字符集合。 使用 while 循環(huán)遍歷整個字符串,對于每個字符執(zhí)行以下操作: a. 在該

    2024年02月01日
    瀏覽(20)
  • 前端算法題——字符串中的第一個唯一字符

    給定一個字符串,找到它的第一個不重復(fù)的字符,并返回它的索引。如果不存在,則返回 -1。 遍歷字符串 用一個對象來記數(shù),出現(xiàn)過一次就+1, 遍歷完畢,再次遍歷字符串,看它們在之前記錄的對象里的值,是否是1,是就返回下標(biāo),不是返回-1。

    2024年02月22日
    瀏覽(18)
  • 【C++初階】String在OJ中的使用(一):僅僅反轉(zhuǎn)字母、字符串中的第一個唯一字母、字符串最后一個單詞的長度、驗證回文串、字符串相加

    【C++初階】String在OJ中的使用(一):僅僅反轉(zhuǎn)字母、字符串中的第一個唯一字母、字符串最后一個單詞的長度、驗證回文串、字符串相加

    前言: ??個人博客:Dream_Chaser ??博客專欄:C++ ??本篇內(nèi)容:僅僅反轉(zhuǎn)字母、字符串中的第一個唯一字母、字符串最后一個單詞的長度、驗證回文串、字符串相加 目錄 917.僅僅反轉(zhuǎn)字母? 題目描述: 387.字符串中的第一個唯一字符 題目描述: HJ1 字符串最后一個單詞的長度

    2024年04月09日
    瀏覽(99)
  • Python3 字符串

    Python3 字符串

    字符串是 Python 中最常用的數(shù)據(jù)類型。我們可以使用引號( \\\' 或 \\\" )來創(chuàng)建字符串。 創(chuàng)建字符串很簡單,只要為變量分配一個值即可。例如: var1 = \\\'Hello World!\\\' var2 = \\\"Runoob\\\" Python 不支持單字符類型,單字符在 Python 中也是作為一個字符串使用。 Python 訪問子字符串,可以使用方括號

    2024年02月11日
    瀏覽(21)
  • Python入門教程 | Python3 字符串

    Python入門教程 | Python3 字符串

    字符串是 Python 中最常用的數(shù)據(jù)類型。我們可以使用引號( ’ 或 \\\" )來創(chuàng)建字符串。 創(chuàng)建字符串很簡單,只要為變量分配一個值即可。例如: Python 不支持單字符類型,單字符在 Python 中也是作為一個字符串使用。 Python 訪問子字符串,可以使用方括號 [] 來截取字符串,字符串

    2024年02月10日
    瀏覽(23)
  • Python3 學(xué)習(xí)筆記 ~ 怎樣打印字符串

    Python中變量的打印方法_python打印變量_清歡依舊的博客-CSDN博客

    2024年02月15日
    瀏覽(35)
  • Python3中將\uXXXX字符串轉(zhuǎn)換為可見字符串的解決方案

    Python3中將\uXXXX字符串轉(zhuǎn)換為可見字符串的解決方案

    ??大家好,我是愛編程的喵喵。雙985碩士畢業(yè),現(xiàn)擔(dān)任全棧工程師一職,從事機(jī)器學(xué)習(xí)以及相關(guān)的前后端開發(fā)工作。曾在阿里云、CCF等比賽獲得多次Top名次?,F(xiàn)為CSDN博客專家、人工智能領(lǐng)域優(yōu)質(zhì)創(chuàng)作者。 ??本文主要介紹了Python3中將uXXXX字符串轉(zhuǎn)換為可見字符串的解決方

    2023年04月08日
    瀏覽(26)
  • 【前端面試3+1】12 toktn驗證過程、面向?qū)ο筇匦?、webpack和vite的區(qū)別、【字符串中的第一個唯一字符】

    【前端面試3+1】12 toktn驗證過程、面向?qū)ο筇匦?、webpack和vite的區(qū)別、【字符串中的第一個唯一字符】

    用戶登錄:用戶提供用戶名和密碼進(jìn)行登錄。 服務(wù)器驗證:服務(wù)器接收到用戶提供的用戶名和密碼,進(jìn)行驗證。 生成token:如果用戶名和密碼驗證通過,服務(wù)器會生成一個token,通常包含一些加密的信息,如用戶ID、過期時間等。 返回token:服務(wù)器將生成的token返回給客戶端(

    2024年04月18日
    瀏覽(23)
  • python3字符串格式化用format()好還是 % 表達(dá)式好

    左手編程,右手年華。大家好,我是一點,關(guān)注我,帶你走入編程的世界。 公眾號:一點sir,關(guān)注領(lǐng)取python編程資料 在 Python 中,使用 format() 方法是更推薦的方式來進(jìn)行字符串格式化,特別是在Python3中。雖然 % 表達(dá)式仍然可以在Python中使用,但已經(jīng)不推薦使用了,新的項目

    2024年04月16日
    瀏覽(89)
  • 【算法思考記錄】動態(tài)規(guī)劃入門!力扣2606. 找到最大開銷的子字符串【Python3、動態(tài)規(guī)劃】

    原題鏈接 動態(tài)規(guī)劃(Dynamic Programming,簡稱 DP)是一種通過將原問題分解為相互重疊的子問題并只解決一次的方法來解決問題的算法優(yōu)化技術(shù)。動態(tài)規(guī)劃通常用于優(yōu)化遞歸問題,通過存儲子問題的解來避免重復(fù)計算,從而顯著提高算法的效率。 動態(tài)規(guī)劃的基本思想是將原問題

    2024年02月03日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包