列表

详情


387. 字符串中的第一个唯一字符

给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。

 

示例 1:

输入: s = "leetcode"
输出: 0

示例 2:

输入: s = "loveleetcode"
输出: 2

示例 3:

输入: s = "aabb"
输出: -1

 

提示:

相似题目

根据字符出现频率排序

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int firstUniqChar(string s) { } };

golang 解法, 执行用时: 0 ms, 内存消耗: 5.2 MB, 提交时间: 2021-07-18 08:15:31

func firstUniqChar(s string) int {
    cnt := [26]int{}
    for _, ch := range s {
        cnt[ch-'a']++
    }
    ans := -1
    for i, ch := range s {
        if cnt[ch-'a'] == 1 {
            return i
        }
    }

    return ans
}

golang 解法, 执行用时: 20 ms, 内存消耗: 5.4 MB, 提交时间: 2021-07-18 08:14:01

func firstUniqChar(s string) int {
    cnt := [26]int{}
    mp := map[rune]int{}
    for i, ch := range s {
        cnt[ch-'a']++
        mp[ch] = i
    }
    ans := -1
    for i, v := range cnt[:] {
        if v == 1 {
            if ans == -1 {
                ans = mp[rune(i+'a')]
            } else {
                ans = min(ans, mp[rune(i+'a')])
            }
        }
    }

    return ans
}

func min(x, y int) int {
    if x > y {
        return y
    }
    return x
}

python3 解法, 执行用时: 208 ms, 内存消耗: N/A, 提交时间: 2018-09-05 23:09:37

class Solution:
    def firstUniqChar(self, s):
        """
        :type s: str
        :rtype: int
        """
        import collections
        d = collections.OrderedDict()
        for c in s:
            if c not in d.keys():
                d[c] = 1
            else:
                d[c] += 1
        for k, v in d.items():
            if v == 1:
                return s.index(k)
        return -1
        

上一题