字符串统计-C语言/Java

描述

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

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

输入描述

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

输出描述

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

示例1

输入:abc

输出:3

示例2

扫描二维码关注公众号,回复: 16213756 查看本文章

输入: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);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_64668629/article/details/132174398