字符串中的第一个唯一字符
- 题源:《剑指 Offer: 面试题 50》P243
- 在线:LeetCode: 387
题目
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。假定该字符串只包含小写字母。
示例:
输入: "leetcode"
输出: 0
输入: "loveleetcode"
输出: 2
思路
- 使用哈希表,第一次遍历该字符串,以该字符为 key,value 为下标索引
- 如果出现次数超过一次则 value 设为 -1
- 再遍历哈希表,或者遍历字符串,找出第一个不等于 -1 的 value,即下标索引
代码实现
function firstUniqChar(s) {
let hash = new Map();
len = s.length;
for (let i = 0; i < len; i++) {
if (hash.has(s[i])) {
hash.set(s[i], -1);
} else {
hash.set(s[i], i);
}
}
for (let [key, value] of hash) {
if (value !== -1) {
return value;
}
}
return -1;
}