字符串统计-C语言/Java

简介: 字符串统计-C语言/Java

描述

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


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


输入描述

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


输出描述

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


示例1

输入:abc

输出:3


示例2

输入:aaa

输出:1

     

将字符串中的每个元素强制转化为ASCll码,作为新建数组的下标,数组的值代表字符串中每种元素的个数,最后遍历数组来统计共出现字符种类的数量。


C语言


#include <stdio.h>
#include<string.h>
int main() {
    char str[500];
    scanf("%s",str);
    //存放128种字符的个数
    int con[128]={0};
    //以字符的ASCLL码作为下标存于数组中
    for (int i=0; i<strlen(str);i++) {
            //一种字符第一次出现
            if(con[(int)str[i]]==0)
            {
                con[(int)str[i]]=1;
            }
            //一种字符出现一次以上
            else 
            {
                con[(int)str[i]]+=1;
            }
    }
    //统计元素的种类
    int count=0;
    for (int i=0; i<128;i++) {
        if(con[i]!=0)
        count++;
    }
    printf("%d",count);
    return 0;
}


Java


import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str=in.next();
        //存放128种字符的个数
        int[] index=new int[128];
        //将字符串转化为字符数组,并遍历整个数组,x表示数组中的元素
        for(char x:str.toCharArray()){
            if(x=='\n')
                break;
            else {
                //一种字符第一次出现
                if(index[x]==0)
                index[x]=1;
                //一种字符出现一次以上
                else
                index[x]+=1;
            }
        }
        //统计不同字符数量
        int count=0;
        for(int i=0;i<128;i++){
            if(index[i]!=0)
            count++;
        }
        System.out.println(count);
    }
}



目录
相关文章
|
2月前
|
SQL JSON Java
告别拼接噩梦:Java文本块让多行字符串更优雅
告别拼接噩梦:Java文本块让多行字符串更优雅
376 82
|
2月前
|
自然语言处理 Java Apache
在Java中将String字符串转换为算术表达式并计算
具体的实现逻辑需要填写在 `Tokenizer`和 `ExpressionParser`类中,这里只提供了大概的框架。在实际实现时 `Tokenizer`应该提供分词逻辑,把输入的字符串转换成Token序列。而 `ExpressionParser`应当通过递归下降的方式依次解析
218 14
|
2月前
|
安全 C语言
C语言中的字符、字符串及内存操作函数详细讲解
通过这些函数的正确使用,可以有效管理字符串和内存操作,它们是C语言编程中不可或缺的工具。
241 15
|
4月前
|
安全 Java API
【Java性能优化】Map.merge()方法:告别繁琐判空,3行代码搞定统计累加!
在日常开发中,我们经常需要对Map中的值进行累加统计。}else{代码冗长,重复调用get()方法需要显式处理null值非原子操作,多线程下不安全今天要介绍的方法,可以让你用一行代码优雅解决所有这些问题!方法的基本用法和优势与传统写法的对比分析多线程安全版本的实现Stream API的终极优化方案底层实现原理和性能优化建议一句话总结是Java 8为我们提供的Map操作利器,能让你的统计代码更简洁、更安全、更高效!// 合并两个列表});简单累加。
436 0
|
6月前
|
存储 缓存 安全
Java 字符串详解
本文介绍了 Java 中的三种字符串类型:String、StringBuffer 和 StringBuilder,详细讲解了它们的区别与使用场景。String 是不可变的字符串常量,线程安全但操作效率较低;StringBuffer 是可变的字符串缓冲区,线程安全但性能稍逊;StringBuilder 同样是可变的字符串缓冲区,但非线程安全,性能更高。文章还列举了三者的常用方法,并总结了它们在不同环境下的适用情况及执行速度对比。
166 17
|
6月前
|
存储 缓存 安全
Java字符串缓冲区
字符串缓冲区是用于处理可变字符串的容器,Java中提供了`StringBuffer`和`StringBuilder`两种实现。由于`String`类不可变,当需要频繁修改字符串时,使用缓冲区更高效。`StringBuffer`是一个线程安全的容器,支持动态扩展、任意类型数据转为字符串存储,并提供多种操作方法(如`append`、`insert`、`delete`等)。通过这些方法,可以方便地对字符串进行添加、插入、删除等操作,最终将结果转换为字符串。示例代码展示了如何创建缓冲区对象并调用相关方法完成字符串操作。
141 13
|
8月前
|
C语言
【C语言程序设计——循环程序设计】统计海军鸣放礼炮声数量(头歌实践教学平台习题)【合集】
有A、B、C三艘军舰同时开始鸣放礼炮各21响。已知A舰每隔5秒1次,B舰每隔6秒放1次,C舰每隔7秒放1次。编程计算观众总共听到几次礼炮声。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。开始你的任务吧,祝你成功!
174 13
|
存储 XML 缓存
Java字符串内幕:String、StringBuffer和StringBuilder的奥秘
Java字符串内幕:String、StringBuffer和StringBuilder的奥秘
183 0
|
安全 Java API
【Java字符串操作秘籍】StringBuffer与StringBuilder的终极对决!
【8月更文挑战第25天】在Java中处理字符串时,经常需要修改字符串,但由于`String`对象的不可变性,频繁修改会导致内存浪费和性能下降。为此,Java提供了`StringBuffer`和`StringBuilder`两个类来操作可变字符串序列。`StringBuffer`是线程安全的,适用于多线程环境,但性能略低;`StringBuilder`非线程安全,但在单线程环境中性能更优。两者基本用法相似,通过`append`等方法构建和修改字符串。
211 1