字符个数统计
题目描述
编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
输入描述:输入N个字符,字符在ACSII码范围内。
输出描述:输出范围在(0~127)字符的个数。
输入例子:abc
输出例子:3
思路1:借助set集合,排除字符串中相同的字符,再统计个数,或者统计集合的大小
1 import java.util.Scanner; 2 import java.util.HashSet; 3 4 public class Main{ 5 public static void main(String[] args){ 6 Scanner sc=new Scanner(System.in); 7 8 String str=sc.nextLine(); 9 char[] array=str.toCharArray(); 10 //int count=0; 11 12 HashSet<Character> hs=new HashSet<Character>(); 13 for(int i=0;i<array.length;i++){ 14 hs.add(array[i]); 15 } 16 //for(Character ch:hs){ 17 // if(ch>=0&&ch<=127){ 18 // count++; 19 // } 20 //} 21 //System.out.println(count); 22 23 System.out.println(hs.size()); 24 } 25 }
思路2:借助另外一个布尔数组boolean[] booleans,把array[i]和booleans数组下标对应起来。
1 import java.util.Scanner; 2 import java.util.HashSet; 3 4 public class Main{ 5 public static void main(String[] args){ 6 Scanner sc=new Scanner(System.in); 7 8 String str=sc.nextLine(); 9 char[] array=str.toCharArray(); 10 int count=0; 11 boolean[] booleans=new boolean[256]; 12 for(int i=0;i<array.length;i++){ 13 if(array[i]<=127&&array[i]>=0){ 14 booleans[array[i]]=true; 15 } 16 } 17 18 for(int i=0;i<booleans.length;i++){ 19 if(booleans[i]==true){ 20 count++; 21 } 22 } 23 System.out.println(count); 24 25 } 26 }

浙公网安备 33010602011771号