387. 字符串中的第一个唯一字符
题目描述(难度:简单)
- 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
示例1:
s = "leetcode"
返回 0.
s = "loveleetcode",
返回 2.
思路1:
某个字符从头开始开始的索引和从尾开始找的索引如果相等,就说明这个字符只出现了一次
详解
- 1.从头到尾遍历一遍字段串;
- 2.判断每个位置的字符的 index() 和 lastIndexOf() 的结果是否相等;
代码1
/**
* @param {string} s
* @return {number}
*/
const firstUniqChar = function (s) {
for(let i =0;i<s.length;i++){
if(s.indexOf(i) === s.lastIndexOf(i)){
return i;
}
}
return -1;
};
思路2:
遍历两次。第一次遍历,用一个哈希对象记录所有字符的出现次数;第二次遍历,找出哈希对象中只出现一次的字符的下标
详解:
- 1.第一次遍历,用一个哈希对象记录所有字符的出现次数;
- 2.第二次遍历,找出哈希对象中只出现一次的字符的下标;
代码2
/**
* @param {string} s
* @return {number}
*/
const firstUniqChar = function (s) {
let hash = {};
for(let i = 0;i<s.length;i++){
if(!hash[i]){
hash[i] = 1;
}else{
hash[i]++
}
}
for(let i =0;i<s,length;i++){
if(hash[i]===1){
return i;
}
}
return -1;
};