合肥企业建站程序宁波网络推广优化方案
描述
计算字符串中含有的不同字符的个数。字符在 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;//一种字符出现一次以上elseindex[x]+=1;}}//统计不同字符数量int count=0;for(int i=0;i<128;i++){if(index[i]!=0)count++;}System.out.println(count);}
}