搜索微信公衆號:'AI-ming3526'或者'計算機視覺這件小事' 獲取更多算法、機器學習乾貨python
csdn:https://blog.csdn.net/baidu_31657889/git
csdn:https://blog.csdn.net/abcgkj/github
github:https://github.com/aimi-cn/AILearners面試
這是由LeetCode官方推出的的經典面試題目清單~
這個模塊對應的是探索的初級算法~旨在幫助入門算法。咱們第一遍刷的是leetcode推薦的題目。
查看完整的劍指Offer算法題解析請點擊github連接:
github地址算法
給定一個字符串,找到它的第一個不重複的字符,並返回它的索引。若是不存在,則返回 -1。編程
案例:微信
s = "leetcode"
返回 0.
s = "loveleetcode",
返回 2.複製代碼
首先咱們能夠想到這道題須要的是一個不重複的字符,咱們順序找到第一個不重複的字符,把其索引存起來,返回最小的索引也就是第一個不重複的字符了。app
注:使用count方法,會增長時間複雜度,因此咱們用字典記錄各字符的索引。若是重複出現,則索引值須要加上len(s),小於len(s)的那個索引就是咱們求的值。機器學習
python學習
class Solution(object):
def firstUniqChar(self, s):
"""
:type s: str
:rtype: int
"""
#算法超時
# res = []
# for i in s:
# if s.count(i) == 1:
# res.append(s.index(i))
# if len(res):
# return min(res)
# return -1
# 用字典記錄各字符的索引。若是重複出現,則索引值須要加上len(s)
d = {}
for i in range(len(s)):
if s[i] not in d:
d[s[i]] = i
else:
d[s[i]] += len(s)
if len(s) and min(d.values()) < len(s) :
return min(d.values())
return -1複製代碼
AIMI-CN AI學習交流羣【1015286623】 獲取更多AI資料
分享技術,樂享生活:咱們的公衆號計算機視覺這件小事每週推送「AI」系列資訊類文章,歡迎您的關注!
本文由博客一文多發平臺 OpenWrite 發佈!