编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。
数据范围:
输入一行没有空格的字符串。
输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。
abc
3
aaa
1
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String line = in.nextLine(); int count = 0; for(int i=0;i<line.length();i++){ if(line.indexOf(line.charAt(i))==i){ count++; } } System.out.println(count); } }
import java.util.HashSet; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String input = in.nextLine(); HashSet<Character> set = new HashSet<>(); for(int i=0;i<input.length();i++) { char tmp = input.charAt(i); if(0<=tmp&&tmp<=127) { set.add(tmp); } } System.out.println(set.size()); } }
import java.util.HashSet; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 HashSet<Character> set = new HashSet(); while (in.hasNext()) { // 注意 while 处理多个 case String str = in.next(); for (int i = 0; i < str.length(); ++ i) { set.add(str.charAt(i)); } System.out.println(set.size()); } } }
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Map<Character, Integer> map = new HashMap<>(); Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNext()) { // 注意 while 处理多个 case String str = in.next(); char [] cStr = str.toCharArray(); for(char cstr : cStr){ if(!map.containsKey(cstr)){ map.put(cstr, 1); } else{ map.put(cstr, map.get(cstr)+1); } } System.out.println(map.size()); } } }map 大法好。。。。。。
import java.io.BufferedReader; import java.io.InputStreamReader; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args)throws Exception { String line = new BufferedReader(new InputStreamReader(System.in)).readLine(); byte [] flags=new byte[128]; short count=0; //short 就够了 for(int i=0;i<line.length();i++){ char c=line.charAt(i); if (c <= 127 &&c >= 0 && flags[c]==0 && c != '\n') { flags[c]=1; ++count; } } System.out.println(count); } }
public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextLine()) { String s = in.nextLine(); int length = s.length(); int[] arr = new int[128]; int count = 0; for (int i = 0; i < length; i++) { char c = s.charAt(i); if (arr[c] == 0){ arr[c] = c; count++; } } System.out.println(count); } }
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 char[] charArray = in.next().toCharArray(); HashSet set = new HashSet(); for (char c : charArray) { set.add(c); } System.out.println(set.size()); } }
import java.util.Scanner; import java.util.HashSet; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextLine()) { // 注意 while 处理多个 case String str = in.nextLine(); String[] strs = str.split(""); HashSet<String> set = new HashSet<>(); for (int i=0;i<strs.length;i++) { set.add(strs[i]); } System.out.println(set.size()); } } }
import java.util.HashSet; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); String s = sc.nextLine(); HashSet<Character>hs=new HashSet<>(); for (int i = 0; i < s.length(); i++) { hs.add(s.charAt(i)); } System.out.println(hs.size()); } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in= new Scanner(System.in); if (in.hasNextLine()){ String s = in.nextLine(); fun2(s); } } private static void fun2(String s) { int[] arr = new int[128]; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); arr[c]++; } int count= 0; for (int i = 0; i < arr.length; i++) { if (arr[i] >0){ count ++; } } System.out.println(count); } }
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String s = new String(); s = in.next(); Set<String> set = new TreeSet<>(); for (int i = 0; i < s.length() ; i++) { set.add(String.valueOf(s.charAt(i))); } System.out.println(set.size()); } } 用set直接插入没有重复的,然后统计数量长度,感觉是我能想到最简洁的了
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); char[] str=in.nextLine().toCharArray(); boolean[] exist=new boolean[128]; for(int i=0;i<str.length;i++){ exist[str[i]]=true; } int sum=0; for(int i=0;i<128;i++){ sum+=exist[i]?1:0; } System.out.print(sum); } }