给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
案例:
s = "leetcode"
返回 0.
s = "loveleetcode",
返回 2.
注意事项: 您可以假定该字符串只包含小写字母。
此题与剑指Offer<五十题>题目一一样,利用哈希表来求即可。
O(n)
O(n)
C++:
class Solution {
public:
int firstUniqChar(string s) {
int res = -1;
int n = s.size();
if (n==0) return res;
unordered_map<char,int> m;
for (int i=0;i<n;i++)
{
m[s[i]]++;
}
for (int i=0;i<n;i++)
{
if (m[s[i]]==1)
{
return i;
}
}
return res;
}
};
class Solution:
def firstUniqChar(self, s: str) -> int:
n = len(s)
res = -1
if n==0:
return res
count = collections.Counter(s)
for index,ch in enumerate(s):
if count[ch]==1:
return index
return res