本页目录
387.字符串中的第一个唯一字符
题目
LeetCode 简单
题目
给定一个字符串 s ,找到 它的 第一个不重复 的字符,并返回它的索引 。如果不存在,则返回 -1 。
示例:
输入: s = “leetcode”
输出: 0
输入: s = “loveleetcode”
输出: 2
输入: s = “aabb”
输出: -1
题解
Map
O(n) O(map 长度)
js
function firstUniqChar(str) {
const sLen = str.length
if (sLen === 0) {
return -1
}
//拿到出现次数
const sMap = new Map()
for (let i = 0; i < sLen; i++) {
const char = str[i]
let len = 0
if (sMap.has(char)) {
len = sMap.get(char) + 1
} else {
len = 1
}
sMap.set(char, len)
}
console.log(sMap)
//拿到结果
let index = -1
for (let i = 0; i < sLen; i++) {
const char = str[i]
const times = sMap.get(char)
if (times === 1) {
index = i
console.log(char, i)
break
}
}
return index
}
console.log('🌰 leetcode', firstUniqChar('leetcode'))
console.log('🌰 loveleetcode', firstUniqChar('loveleetcode'))
console.log('🌰 aabb', firstUniqChar('aabb'))
执行结果
Map(6) { 'l' => 1, 'e' => 3, 't' => 1, 'c' => 1, 'o' => 1, 'd' => 1 }
l 0
🌰 leetcode 0
Map(7) {
'l' => 2,
'o' => 2,
'v' => 1,
'e' => 4,
't' => 1,
'c' => 1,
'd' => 1
}
v 2
🌰 loveleetcode 2
Map(2) { 'a' => 2, 'b' => 2 }
🌰 aabb -1