題目描述
在乙個字串(0<=字串長度<=10000,全部由字母組成)中找到第乙個只出現一次的字元,並返回它的位置, 如果沒有則返回 -1(需要區分大小寫).
# -*- coding: utf-8 -*-
# @time : 2019-07-12 9:40
# @author : jayce wong
# @projectname : job
# @filename : firstnotrepeatingchar.py
# @blog :
# @github :
from collections import defaultdict
class solution:
"""由於這道題目和次數有關,因此有兩種解法。
解法1:
遍歷字串,對於當前字元,遍歷後面的所有字元,如果出現了相同的字元,那麼說明這個字元出現次數》1
這種解法的時間複雜度為o(n^2)
解法2:
維護乙個雜湊表,用於儲存每個字元出現的次數。這樣,通過兩輪遍歷,第一輪統計每個字元的出現次數,
第二輪查詢每個字元的出現次數,如果次數為1那麼就返回該字元的下標。
這種解法的時間複雜度為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
劍指offer 第乙個只出現一次的字元
在乙個字串 1 字串長度 10000,全部由字母組成 中找到第乙個只出現一次的字元,並返回它的位置 我們遍歷這個字串,假設每個當前字元都是只出現一次的,我們分別向前和向後考察是否存在相同字元 向前考察 儲存乙個vector裡面存放所有已知的已經重複過的字元,如果當前字元跟這個vector裡面的字元相...
劍指offer 第乙個只出現一次的字元
在乙個字串 0 字串長度 10000,全部由字母組成 中找到第乙個只出現一次的字元,並返回它的位置,如果沒有則返回 1.將字串轉化成陣列,兩個迴圈,外層迴圈遍歷這個陣列i,內層迴圈也是從0 開始遍歷j,判斷i對應的元素和j對應的元素是否相等,相等的話就說明不是要求的位置,直接開始判斷下乙個元素i p...
劍指offer 第乙個只出現一次的字元
在乙個字串 0 字串長度 10000,全部由字母組成 中找到第乙個只出現一次的字元,並返回它的位置,如果沒有則返回 1 需要區分大小寫 我的思路 第一次遍歷string,用乙個map記錄每個字元出現的次數 第二次遍歷map,找到次數為1的字元 第三次遍歷string,找到該字元出現的位置。問題 ma...