题目

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
示例:
s = “leetcode”
返回 0
s = “loveleetcode”
返回 2
提示:你可以假定该字符串只包含小写字母。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/first-unique-character-in-a-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解

1.哈希表
模拟哈希表, 找出字符出现频率, 然后再从头遍历, 找到第一个出现频率为1的字母,返回下标
O(n)

  1. const firstUniqChar = function(s) {
  2. const arr = new Array(26).fill(0)
  3. const n = s.length
  4. for(let i = 0; i < n; i++) {
  5. const code = s[i].charCodeAt() - 'a'.charCodeAt()
  6. arr[code] ++
  7. }
  8. for (let i = 0; i < n; i++) {
  9. const code = s[i].charCodeAt() - 'a'.charCodeAt()
  10. if(arr[code] === 1) {
  11. return i
  12. }
  13. }
  14. return -1
  15. };