LeetCode初級算法--字符串02:字符串中的第一個唯一字符
一、引子
這是由LeetCode官方推出的的經典面試題目清單~
這個模塊對應的是探索的初級算法~旨在幫助入門算法。我們第一遍刷的是leetcode推薦的題目。
二、題目
給定一個字符串,找到它的第一個不重復的字符,并返回它的索引。如果不存在,則返回 -1。
案例:
s = "leetcode"
返回 0.
s = "loveleetcode",
返回 2.
1、思路
首先我們可以想到這道題需要的是一個不重復的字符,我們順序找到第一個不重復的字符,把其索引存起來,返回最小的索引也就是第一個不重復的字符了。
注:使用count方法,會增加時間復雜度,所以我們用字典記錄各字符的索引。如果重復出現,則索引值需要加上len(s),小于len(s)的那個索引就是我們求的值。
2、編程實現
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
分享技術,樂享生活:我們的公眾號計算機視覺這件小事每周推送“AI”系列資訊類文章,歡迎您的關注!
本文由博客一文多發平臺 OpenWrite 發布!
審核編輯 黃昊宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
人工智能
+關注
關注
1799文章
47965瀏覽量
241311 -
機器學習
+關注
關注
66文章
8458瀏覽量
133241 -
深度學習
+關注
關注
73文章
5523瀏覽量
121726
發布評論請先 登錄
相關推薦
字符串在數據庫中的存儲方式
數據庫是現代信息技術中存儲和管理數據的核心組件。字符串作為最常見的數據類型之一,在數據庫中的存儲方式對其性能和可擴展性有著重要影響。 數據類型 固定長度
字符串在編程中的應用實例
字符串在編程中有著廣泛的應用,它們被用于表示文本數據、處理用戶輸入、構建動態內容等。以下是一些字符串在編程中的應用實例: 1. 用戶輸入與輸出 用戶輸入 :程序通常需要從用戶那里獲取輸
字符串與字符數組的區別
大多數編程語言中是一個高級數據結構,通常由語言的運行時環境直接支持。字符串通常以連續的字符序列存儲,但它們不僅僅是字符的簡單集合。
字符串反轉的實現方式
函數自身調用來解決問題的方法。在字符串反轉中,遞歸可以用來逐個字符地構建反轉后的字符串。 實現步驟 基本情況 :如果字符串為空或只有
base64字符串轉換為二進制文件
Base64是一種編碼方法,用于將二進制數據轉換為ASCII字符串。這種編碼通常用于在不支持二進制數據的系統中傳輸數據,例如電子郵件或網頁。將Base64字符串轉換為二進制文件的過程相
labview字符串數組轉化為數值數組
常重要的。LabVIEW支持多種數據類型,包括數值、字符串、數組、簇等。在本例中,我們將關注字符串數組和數值數組。 字符串數組 :由一系列
labview字符串如何轉換為16進制字符串
在LabVIEW中,將字符串轉換為16進制字符串是一個常見的需求,尤其是在處理數據通信和硬件接口時。LabVIEW提供了多種方法來實現這
labview中如何實現字符串選擇輸出
在LabVIEW中實現字符串選擇輸出是一項常見的任務,它涉及到字符串處理、條件判斷和用戶界面設計等多個方面。由于LabVIEW是一種圖形化編
labview中常用的字符串函數有哪些?
) : 功能:該函數用于返回字符串所包含的字符個數。 應用場景:常用于需要計算字符串長度的場景,如文件命名、數據處理等。 連接字符串(String Concatenate) : 功能:
labview字符串的四種表示各有什么特點
。在LabVIEW中,字符串是一種基本的數據類型,用于表示文本信息。字符串在LabVIEW中有多種表示方式,每種方式都有其特定的應用場景和特點。以下是對LabVIEW
評論