字符个数统计

题目描述

编写一个函数,计算字符串中含有的不同字符的个数。字符在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 }

 

posted @ 2017-04-05 18:11  临江仙zhe  阅读(63)  评论(0)    收藏  举报