HJ10 字符个数统计

152 阅读1分钟

Problem: HJ10 字符个数统计

题目描述

描述

编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次

例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。

数据范围:1n5001≤n≤500

输入描述:

输入一行没有空格的字符串。

输出描述:

输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。

示例1

输入:abc
输出:3

示例2

输入:aaa
输出:1

解题思路

使用一个哈希集合(Set)来存储已经遍历过的字符,并利用集合的特性来去重.

算法流程

1.创建一个空的哈希集合 unique_chars
2.遍历给定的字符串 s 的每个字符 char
3.判断字符 char 的 ASCII 码是否在范围内(0~127)。如果是,则将字符 char 加入到哈希集合 unique_chars 中。
4.返回哈希集合 unique_chars 的大小(即不同字符的个数)。

代码

function countUniqueChars(s) {
  const uniqueChars = new Set();

  for (let char of s) {
    if (char.charCodeAt(0) >= 0 && char.charCodeAt(0) <= 127) {
      uniqueChars.add(char);
    }
  }

  return uniqueChars.size;
}

复杂度

  • 时间复杂度:

时间复杂度: O(n)O(n)

  • 空间复杂度:

空间复杂度: O(n)O(n)