题解
此题解决的方法有很多。
1.使用set的去重特性解决
import java.util.Scanner;
import java.util.Set;
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextLine()) {
String str = sc.nextLine();
Set<Character> set = new HashSet<>();
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
set.add(ch);
}
System.out.println(set.size());
}
}
}
2.使用String.contains()方法来排查重复
import java.util.Scanner;
import java.util.Set;
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextLine()) {
String str = sc.nextLine();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
// 如果在sb中没有则添加
if (!sb.toString().contains(ch + "")) {
sb.append(ch);
}
}
System.out.println(sb.length());
}
}
}
做题过程中犯的错误做法
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()) {
String str = sc.nextLine();
int count = 0;
while(str.length() > 0) {
char ch = str.charAt(0);
str = str.replaceAll(ch+"", "");
count++;
}
System.out.println(count);
}
}
}
错误原因:当输入的用例为"uqic^g`(s&jnl(m#vt!onwdj(ru+os&wx"时,”^“为死循环,因为replaceAll()中接收的参数为正则表达式;因此在做题的使用应该多考虑此处的犯错。

京公网安备 11010502036488号