一、题目信息
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
示例
s = "leetcode"
返回 0
s = "loveleetcode"
返回 2
提示:你可以假定该字符串只包含小写字母。
二、解题
解析:为了保证时间复杂度为O(n),所以不使用js现成的字符串函数,例如 indexOf等
解题步骤
- 线形遍历字符串,统计每个单词的出现字数,并存入count(‘单词’,‘出现次数’)中
- 再次遍历字符串,通过map查找到第一个出现次数为1的单词,然后直接返回下标
代码
function firstUniqChar(s) {
let count = {}
// 统计次数
for(let i = 0; i < s.length; i++) {
typeof count[s[i]] === 'undefined'?count[s[i]] = 1:count[s[i]]++;
}
// 检索第一个出现次数为 1的单词
for(let i = 0;i < s.length; i++) {
if (count[s[i]] === 1) {
return i
}
}
return -1
}