java HashSet解法

题目描述

编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
例如,对于字符串abaca而言,有a、b、c三种不同的字符,因此输出3。

分析

涉及到去重的时候,又是单列表,首先想到HashSet,唯一的难点是判断字符的ASCII码在(0-127)这个范围内;其实只要把字符强转成整型,就是其对应的ASCII码了。这种情况下只要判断 该值是否在0-127内就可以了。

import java.util.*;
public class Main {
        public static void main(String[] args){
            Scanner sc =new Scanner(System.in);
            HashSet<Integer> set = new HashSet<>();
            //HashSet<Character> set = new HashSet<>();
            //while(sc.hasNext("")){
                String s = sc.nextLine();
                char[] charArray = s.toCharArray();
                for(char c : charArray){
                    int i =c;
                    if(i>=0 && i<=127){
                        set.add(i);
                    }
                }
                System.out.println(set.size());
            //}
        }
}