題目描述
在一個字符串(0<=字符串長度<=10000,全部由字母組成)中找到第一個只出現(xiàn)一次的字符,并返回它的位置, 如果沒有則返回 -1(需要區(qū)分大小寫).
創(chuàng)新互聯(lián)基于成都重慶香港及美國等地區(qū)分布式IDC機房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)服務(wù)器托管報價,主機托管價格性價比高,為金融證券行業(yè)遂寧服務(wù)器托管,ai人工智能服務(wù)器托管提供bgp線路100M獨享,G口帶寬及機柜租用的專業(yè)成都idc公司。
# -*- 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:
遍歷字符串,對于當(dāng)前字符,遍歷后面的所有字符,如果出現(xiàn)了相同的字符,那么說明這個字符出現(xiàn)次數(shù)>1
這種解法的時間復(fù)雜度為O(n^2)
解法2:
維護(hù)一個哈希表,用于保存每個字符出現(xiàn)的次數(shù)。這樣,通過兩輪遍歷,第一輪統(tǒng)計每個字符的出現(xiàn)次數(shù),
第二輪查詢每個字符的出現(xiàn)次數(shù),如果次數(shù)為1那么就返回該字符的下標(biāo)。
這種解法的時間復(fù)雜度為O(n)
"""
def FirstNotRepeatingChar(self, s):
if not s:
return -1
# 在python中,我們可以利用默認(rèn)字典來簡化代碼
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
網(wǎng)頁標(biāo)題:劍指offer:第一個只出現(xiàn)一次的字符
文章轉(zhuǎn)載:http://bm7419.com/article36/jjcjpg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、全網(wǎng)營銷推廣、定制網(wǎng)站、網(wǎng)頁設(shè)計公司、企業(yè)建站、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)