📌  相关文章
📜  资质| JavaScript课程测验3 |问题1(1)

📅  最后修改于: 2023-12-03 14:57:48.027000             🧑  作者: Mango

资质| JavaScript课程测验3 |问题1
问题描述

编写一个函数,接收一个字符串作为参数,返回该字符串中第一个出现超过一次的字符。

示例
findFirstDuplicate('hello') // 'l'
findFirstDuplicate('abbccd') // 'b'
findFirstDuplicate('abcdefg') // undefined
解题思路

该问题可以使用哈希表来解决,定义一个空的哈希表对象,遍历字符串中的每个字符,如果该字符在哈希表中已经存在,则返回该字符并结束循环,否则将该字符添加到哈希表中。

解题代码
function findFirstDuplicate(str) {
  const map = {};
  for (let i = 0; i < str.length; i++) {
    if (map[str[i]]) {
      return str[i];
    } else {
      map[str[i]] = true;
    }
  }
  return undefined;
}
总结

该问题可以使用哈希表来解决,在遍历字符串中的每个字符时,使用哈希表记录字符是否已经出现过,如果已经出现过,则返回该字符。该问题的时间复杂度为 $O(n)$,空间复杂度为 $O(n)$。