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; } }