📜  门| GATE-CS-2014-(Set-2) |问题 20(1)

📅  最后修改于: 2023-12-03 15:12:42.243000             🧑  作者: Mango

题目描述

给定一个字符串s,它由数字和小写字母组成。找到字符串中第一个不重复的字符,并返回它的索引。如果不存在,则返回-1。

函数签名

以下是函数的C++签名:

int firstUniqChar(string s);
输入

一个字符串s,由数字和小写字母组成,长度范围为[1,100000]

输出

返回第一个不重复字符的索引,如果不存在,则返回-1

示例
Input: s = "leetcode"
Output: 0

Input: s = "loveleetcode"
Output: 2

Input: s = "aabb"
Output: -1
解题思路

我们可以使用哈希表来解决该问题。我们可以遍历字符串s两次。第一次遍历字符串s时,将每个字符的出现次数存储到一个哈希表中。第二次遍历字符串s时,对于每个字符,如果它的出现次数为1,则返回它的索引即可。

代码片段

以下为我用C++写的代码片段,可供参考。

int firstUniqChar(string s)
{
    unordered_map<char, int> charCount;
    int n = s.size();
    for (int i = 0; i < n; i++) {
        charCount[s[i]]++;
    }
    for (int i = 0; i < n; i++) {
        if (charCount[s[i]] == 1) {
            return i;
        }
    }
    return -1;
}

以上就是本题的全部内容,如果您有任何疑问或建议,请告诉我。