溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

劍指offer:第一個只出現(xiàn)一次的字符

發(fā)布時間:2020-07-21 12:30:07 來源:網(wǎng)絡(luò) 閱讀:332 作者:Jayce_SYSU 欄目:編程語言

題目描述
在一個字符串(0<=字符串長度<=10000,全部由字母組成)中找到第一個只出現(xiàn)一次的字符,并返回它的位置, 如果沒有則返回 -1(需要區(qū)分大小寫).

# -*- coding: utf-8 -*-
# @Time         : 2019-07-12 9:40
# @Author       : Jayce Wong
# @ProjectName  : job
# @FileName     : firstNotRepeatingChar.py
# @Blog         : https://blog.51cto.com/jayce1111
# @Github       : https://github.com/SysuJayce

from collections import defaultdict

class Solution:
    """
    由于這道題目和次數(shù)有關(guān),因此有兩種解法。
    解法1:
    遍歷字符串,對于當前字符,遍歷后面的所有字符,如果出現(xiàn)了相同的字符,那么說明這個字符出現(xiàn)次數(shù)>1
    這種解法的時間復(fù)雜度為O(n^2)

    解法2:
    維護一個哈希表,用于保存每個字符出現(xiàn)的次數(shù)。這樣,通過兩輪遍歷,第一輪統(tǒng)計每個字符的出現(xiàn)次數(shù),
    第二輪查詢每個字符的出現(xiàn)次數(shù),如果次數(shù)為1那么就返回該字符的下標。
    這種解法的時間復(fù)雜度為O(n)
    """
    def FirstNotRepeatingChar(self, s):
        if not s:
            return -1

        # 在python中,我們可以利用默認字典來簡化代碼
        char_count = defaultdict(int)
        for c in s:
            char_count[c] += 1

        for i in range(len(s)):
            if char_count[s[i]] == 1:
                return i
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI