题目描述
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
解题思路
- 遍历字符串,用HashMap统计每个字符出现的次数,其中HashMap键为字符,值为字符出现次数,时间复杂度为O(n)
- 再次遍历字符串,在HashMap中查看字符出现次数,事件复杂度为O(n)
- 返回字符出现次数为1的字符的位置index
代码实现
function FirstNotRepeatingChar(str) {
if (str.length < 1 || str.length > 10000) {
return -1;
}
let arr = str.split("");
let hashMap = {};
for (let key of arr) {
if (!hashMap.hasOwnProperty(key)) {
hashMap[key] = 1;
} else {
hashMap[key]++;
}
}
let index = -1;
for(let i in arr){
if(hashMap[arr[i]]==1){
index=i;
break;
}
}
return index;
}