题目描述
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
示例: s = "leetcode" 返回 0
s = "loveleetcode" 返回 2
提示:你可以假定该字符串只包含小写字母
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/first-unique-character-in-a-string 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
我的AC代码
/**
* @param {string} s
* @return {number}
*/
var firstUniqChar = function(s) {
let dict = {};
for(let i = 0, len = s.length; i < len; i++) {
let ch = s[i];
if(dict[ch]) {
dict[ch] += 1;
}
else {
dict[ch] = 1
}
}
for(let i = 0, len = s.length; i < len; i++) {
let ch = s[i];
if(dict[ch] === 1) {
return i;
}
}
return -1;
};
题解思路
遍历两遍字符串,第一遍,使用字典对出现的字母进行计数,第二遍寻找第一个次数为1的字母,返回它的索引即可。
时间复杂度: O(N)O 只遍历了两遍字符串,同时字典中查找操作是常数时间复杂度的。
空间复杂度: O(N) 用到了字典来存储字符串中每个元素出现的次数。