題目:
給定乙個字串,找到它的第乙個不重複的字元,並返回它的索引。如果不存在,則返回-1。
示例:
s = 「leetcode」提示:你可以假定該字串只包含小寫字母。返回 0
s = 「loveleetcode」
返回 2
解題思路:
線性時間複雜度解法
這道題最優的解法就是線性複雜度了,為了保證每個元素是唯一的,至少得把每個字元都遍歷一遍。
演算法的思路就是遍歷一遍字串,然後把字串中每個字元出現的次數儲存在乙個雜湊表中。這個過程的時間複雜度為 o(n),其中 n 為字串的長度。
接下來需要再遍歷一次字串,這一次利用雜湊表來檢查遍歷的每個字元是不是唯一的。如果當前字元唯一,直接返回當前下標就可以了。第二次遍歷的時間複雜度也是 o(n)。
複雜度分析:
**:
class
solution
(object):
deffirstuniqchar
(self, s)
:"""
:type s: str
:rtype: int
"""#build hasp map
count=collections.counter(s)
#find the index
for idx,ch in
enumerate
(s):
if count[ch]==1
:return idx
return
-1
Leetcode 字串 字串中的第乙個唯一字元
題目 給定乙個字串,找到它的第乙個不重複的字元,並返回它的索引。如果不存在,則返回 1。示例 s leetcode 返回 0 s loveleetcode 返回 2 補充知識 1。字串中的charat 方法能將字串中的字元分割。2。hashmap中的方法getordefault key,defaul...
LeetCode 字串中的第乙個唯一字元
給定乙個字串,找到它的第乙個不重複的字元,並返回它的索引。如果不存在,則返回 1。案例 s leetcode 返回 0.s loveleetcode 返回 2.注意事項 您可以假定該字串只包含小寫字母。class solution def firstuniqchar self,s str int s...
Leetcode 字串中的第乙個唯一字元
給定乙個字串,找到它的第乙個不重複的字元,並返回它的索引。如果不存在,則返回 1。案例 s leetcode 返回 0.s loveleetcode 返回 2.注意事項 您可以假定該字串只包含小寫字母。思路分析 需要逐次使用串中的單個元素和其餘的元素比較 內外兩層迴圈 設定乙個布林型別的變數 初始化...