Java写题解的第1天:字符个数统计

由不重复联想到使用set
两种方法:第一种直接遍历字符串存入set,输出set长度即可;第二种建立一个长度为128的数组,检测字符是否出现,再遍历求得个数;
两种方法时间内存接近,时间复杂度均为O(n)

import java.io.*;
import java.util.HashSet;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        char[] cs = br.readLine().toCharArray();
        br.close();

        // 方法一:12ms 9428kb
        HashSet<Character> set = new HashSet<>();
        for(char c: cs) {
            set.add(c);
        }
        System.out.println(set.size());
    }

    // 方法二:13ms 9444kb
    public static int count(char[] cs) {
        boolean[] set = new boolean[128];
        int count = 0;
        for(char c: cs) {
            set[(int)c] = true;
        }
        for(boolean b: set) {
            if(b) 
                count++;
        }
        return count;
    }
}