【华为OD机试】1009 - 字符个数统计
2023-09-14 09:05:30 时间
🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈
🍂个人博客首页: KJ.JK
💖系列专栏:华为OD机试(Java&Python&C语言)
一、题目
🔸题目描述
编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3
🔸输入输出
输入
输入一行没有空格的字符串。
输出
输出 输入字符串 中范围在(0~127,包括0和127)字符的种数
🔸样例1
输入
abc
输出
3
🔸样例2
输入
aaa
输出
1
二、代码参考
import java.util.Scanner;
import java.util.BitSet;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String line = scanner.next();
//总共有128个字符。字需要用128位
BitSet bitSet = new BitSet(128);
for (char c : line.toCharArray()) {
//判断字符c是否已出现
if (!bitSet.get(c)) {
//未出现就设置为已出现
bitSet.set(c);
}
}
//统计有多少字符已出现过
System.out.println(bitSet.cardinality());
}
}
--------------------------------------------------------
def count_character(str):
string = ''.join(set(str)) # 去重后以字符串的形式
count = 0 # 开始计数
for item in string:
if 0 <= ord(item) <= 127: # ASCII码范围要求
count += 1 # 计数
return count
str = input()
print(count_character(str))
--------------------------------------------------------------
/**
运用的是HASH表的思想,因为只有最多只有128种数据,所以只需维护一个大小为128的字符数组,让输入的字符作为数组下标,
取出这个下标数组中的字符直接与输入的字符比较(不用for循环从头再查),如果相同则跳过,不同则赋值,让结果++,最后遇到'\n'结束循环,返回结果即可
*/
#include<stdio.h>
#define MAX_TABLE_SIZE 128
int main(){
char hash[MAX_TABLE_SIZE] = {-1};
char c = 0;
int num = 0;
while(~scanf("%c",&c)){
if(c == '\n') break;
if(hash[(int)c] != c){
hash[(int)c] = c;
num++;
}
}
printf("%d\n",num);
}
作者:KJ.JK
文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习
相关文章
- 常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
- JavaScript中统计字符的个数
- php imagecreatetruecolor输出字符符或验证码
- Java实现 蓝桥杯VIP 算法训练 统计字符次数
- 【JAVA】java编译错误:编码UTF8/GBK的不可映射字符
- 3. 无重复字符的最长子串(滑动窗口+哈希表)
- LeetCode-828. 统计子串中的唯一字符【哈希表,字符串,动态规划】
- 【基础入门题033】统计字符数
- C语言/C++常见习题问答集锦(四十八) 之字符替换与整数拆分
- golang字符型及使用细节
- sql中char(9) char(10) char(13)分别代表哪个字符
- Hadoop快速入门——第三章、MapReduce案例(字符统计)
- 新字符设备驱动
- 1790. 仅执行一次字符串交换能否使两个字符串相等-统计字符不相同位置的数量
- 1358. 包含所有三种字符的子字符串数目-滑动窗口
- 习题 3.16 输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
- 习题 6.10 有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。
- Leetcode 3. 无重复字符的最长子串(超出时间限制的情况下)
- VB编程:统计字符个数-52_彭世瑜_新浪博客
- 011-Shell 文件中是否包含某字符
- 3.6 stringprep--互联网域名的字符标准库
- python学习===从键盘输入一些字符,逐个把它们写到磁盘文件上,直到输入一个 # 为止。