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

示例

s = “leetcode” 返回 0
s = “loveleetcode” 返回 2

题解

创建一个map

遍历一次字符串,在map中记录每个字符索引,如果已经记录(表示有多个重复的字符)则设置成 -1

再次遍历字符串,如果当前字符的索引依然等于map的值,则就表示该字符只出现过一次

最后都不成立则返回 -1

  1. /**
  2. * @param {string} s
  3. * @return {number}
  4. */
  5. var firstUniqChar = function(s) {
  6. const map = {}
  7. for (let i = 0; i < s.length; i++) {
  8. if (map[s[i]] === undefined) {
  9. map[s[i]] = i
  10. } else {
  11. map[s[i]] = -1
  12. }
  13. }
  14. for (let i = 0; i < s.length; i++) {
  15. if (map[s[i]] === i) {
  16. return i
  17. }
  18. }
  19. return -1
  20. };