java Set
题目
题面描述:
一篇文章由有若干个单词构成,小A希望知道文章中有哪些特殊单词。所谓特殊单词是指,构成这个单词的所有字母(不区分大小写)经过任意方式重组形成的一个新单词也出现在文章中。小A希望知道文章中这样的特殊单词有哪些,您能帮他找出来吗?
输入:
输入数据有若干行,每行为一个字符串,由空格分隔开,单词由大小写字符及数字构成,每个单词长度不超过30个字符。若该行字符为#,表示输入结束。
输出:
按字典序输出所有的特殊单词,所有特殊单词按其第一次在文章中出现的形式输出,每行输出一个单词。
示例输入:
a aa sd 12 aaa Bd dB
BD c a 21 A
aa aaa
示例输出:
12
Bd
a
代码
import java.util.*;
public class Main {
public static String Sort(String x) {
String string = "";
char[] arr = new char[x.length()];
for (int i = 0; i < x.length(); i++) {
arr[i] = x.charAt(i);
}
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
string += arr[i];
}
return string;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Set<String> set = new HashSet<>();//原生的
List<String> set1 = new ArrayList<>();//存储得到的结果
List<String> set3 = new ArrayList<>();//存储得到的结果
while (in.hasNextLine()) {
String s = in.nextLine();
if (s.equals("#")) break;
String arr[] = s.split(" ");
for (int i = 0; i < arr.length; i++) {
set1.add(arr[i]);
}
}
for (String value1 : set1) {//用没有排好序的
for (String value : set1) {//用没有排好序的
if (!value.equals(value1)){// 两个单词不相等
if ((Sort(value1).equals(Sort(value))||(Sort(value1.toLowerCase()).equals(Sort(value.toLowerCase()))))){
if (!set.contains(Sort(value1.toLowerCase()))){
set.add(Sort(value1.toLowerCase()));
set3.add(value1);
}
}
}
}
}
String arr[] = set3.toArray(new String[set3.size()]);
Arrays.sort(arr);
for (String x : arr
) {
System.out.println(x);
}
in.close();
}
}
来源:CSDN
作者:农村娃的成长之路
链接:https://blog.csdn.net/weixin_44135909/article/details/104312499