采用Map存储出现过的字符,用map.containsKey()方法查看是否重复字符
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String str = in.nextLine();
Map<Character,Integer> map = new HashMap<>();
for(char ch:str.toCharArray()){
if(!map.containsKey(ch)){
map.put(ch,1);
}
}
int num=0;
for(int i:map.values()){
num += i;
}
System.out.println(num);
}
第二种采用BitSet位图结构
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
BitSet bs = new BitSet(128);//总共128个字符
for(char ch:str.toCharArray()){
if(!bs.get(ch)){//看bs中是否有这个字符
bs.set(ch);//没有则添加
}
}
System.out.println(bs.cardinality());//输出bs中值为true的个数
}