分析:可以观察到,两个字符串是同一类当且仅当构成他们的字符集合相同且个数也相同。首先对于每个字符串进行排序,最后再对整个字符串数组排序一下,遍历一遍计算个数就好。
可执行代码:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
public class StringClassifer {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()){
ArrayList<String> list = new ArrayList<>();
int n = Integer.valueOf(scanner.nextLine());
String[] str = new String[n];
for(int i = 0; i < n; i++){
str[i] = scanner.nextLine();
char[] ch = str[i].toCharArray(); //将字符串转为字符数组
Arrays.sort(ch); //对字符数组排序
str[i] = new String(ch); //将排序后的字符数组重新转化为字符串
list.add(str[i]);
}
Collections.sort(list);
String temp = "";
int num = 0;
for(int i = 0; i < list.size(); i++){
if(!temp.equals(list.get(i))){
//System.out.println(list.get(i));
temp = list.get(i);
num++;
}
}
System.out.println(num);
}
}
}