前端-每天一道算法题-005:字符串中的第一个唯一字符

110 阅读1分钟

题目

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。

leetcode地址:leetcode.cn/problems/fi…

示例(字符串只包含小写字母)

  • s='shilishi'

  • 返回 3,下标 3l第一个不重复的字符。

  • s='zhebushishili'

  • 返回 0,下标 0z第一个不重复的字符。

  • 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

结束语

欢乐的做题时光总是如此短暂,有更好的方法可以评论区分享,下次再见!