题目
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
leetcode地址:leetcode.cn/problems/fi…
示例(字符串只包含小写字母)
-
s='shilishi' -
返回
3,下标3 的l是第一个不重复的字符。 -
s='zhebushishili' -
返回
0,下标0 的z是第一个不重复的字符。 -
s='gougou' -
返回
-1,没有不重复的字段。
解题思路
这种属于计数类型的算法题,可以先遍历字符串,并定义一个空对象,通过对象记录每一个字符串出现的次数,出现一次加1,遍历结束后再遍历一次字符串,看它们在之前记录的对象里的值,是否是1,是就返回下标,不是返回-1
参考答案
const str = 'tuyreuretuerueyuwpwaf'
const filter = (s: string) => {
const map: any = {}
for (let v of s) {
map[v] = (map[v] || 0) + 1
}
for (let i = 0; i < s.length; i++) {
if (map[s[i]] === 1) {
console.log('s[i]',s[i]); // p
return i
}
}
return -1
}
const answer = filter(str)
console.log('answer',answer) // 17
结束语
欢乐的做题时光总是如此短暂,有更好的方法可以评论区分享,下次再见!