首页 > 试题广场 >

字符个数统计

[编程题]字符个数统计
  • 热度指数:509402 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。

数据范围:

输入描述:

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



输出描述:

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

示例1

输入

abc

输出

3
示例2

输入

aaa

输出

1
头像 Lonffrey
发表于 2020-03-10 01:05:35
凡是涉及到去重统计都可以用位图实现。因为每一个不同的数据只需要用二进制的一位存储即可,大大减小了统计所使用的存储空间 import java.util.Scanner; import java.util.BitSet; public class Main { public static 展开全文
头像 aze5888
发表于 2022-01-16 23:10:08
python一行代码解决,然而看着别的语言要写好几行。真不知道应该觉得是在耍流氓还是应该觉得是优越感(手动狗头)? print(len(set(input().replace('\n','')))) 还有小伙伴问我看清楚题了吗?意思是题目要求编写一个函数,好吧,既然如此,就耍赖到底(再次狗头) p 展开全文
头像 挖掘机斯基
发表于 2021-06-24 09:17:03
思路:遍历每个字符,add到HashSet中,使用HashSet完成去重,输出size代码实现: import java.util.HashSet; import java.util.Scanner; public class Main { public static void main 展开全文
头像 aaakkk998
发表于 2021-09-18 19:02:52
#include <stdio.h> #include <string.h> #include <stdlib.h> int num=0,len,i,j,k,asc; int tmp[128]={0}; char str[400]; int main() { 展开全文
头像 牛客732226984号
发表于 2021-06-07 22:54:21
根据题目要求:1、ASCII码范围在0~1270 <= ord(string) <= 1272、相同字符只计算一次,即去重set(string) 终上,最终代码: def count_character(str): string = ''.join(set(str)) # 去重 展开全文
头像 你敲代码的样子好像蔡徐坤
发表于 2021-09-22 17:56:41
#include<iostream> #include<set> using namespace std; int main() { string text; //存放输入的字符串 getline(cin, text); //获取输入的一行字符串 展开全文
头像 橙子爱吃桃子
发表于 2020-09-03 16:54:34
C++简洁代码: #include<bits/stdc++.h> using namespace std; int main() { string str; cin >> str; unordered_set<char> set; for 展开全文
头像 牛客169974873号
发表于 2022-01-19 12:03:29
#include<stdio.h> int main() { char arr[501] = {'\0'};//存放字符串 int count[128] = {0};//把字符串对应的ascii码作为下标 int sum = 0;//计算不同字符个数 sc 展开全文
头像 银色子弹100
发表于 2020-02-19 17:17:48
#include<stdio.h> #include<string.h> int main() { char c=0,str[128] = { 0 }; int a=0,n=0; while  展开全文
头像 君莫笑swl
发表于 2021-10-13 10:26:24
字符个数统计:C语言解法 运用的是HASH表的思想,因为只有最多只有128种数据,所以只需维护一个大小为128的字符数组,让输入的字符作为数组下标,取出这个下标数组中的字符直接与输入的字符比较(不用for循环从头再查),如果相同则跳过,不同则赋值,让结果++,最后遇到'\n'结束循环,返回结果即可。 展开全文