题目描述:点击打开链接
/*
思路:将每个单词存入list中,再把每个单词的字符重排后存入map中,
以便于排除相同的单词。
*/
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;
import java.util.TreeSet;
public class Main
{
public static void main(String[] args)
{
Scanner cin = new Scanner(System.in);
TreeSet<String> set = new TreeSet<>();
ArrayList<String> list = new ArrayList<>();
HashMap<String,Integer> map = new HashMap<>();
String s;
/*
1.输入字符串,将字符串存入list中
在对字符串的字符进行排序,添加入map中,
如若没有该元素,将Value设为一,
若已有该(重复)元素,便对该Value值进行加一,
以便判断该元素是不是重复元素.
*/
while((s=cin.next()).charAt(0)!='#')
{
list.add(s);
int cnt = 1;
if(map.get(reset(s))!=null)
cnt = map.get(reset(s))+1;
map.put(reset(s),cnt);
}
/*
2.对list中的元素进行遍历,
然后将元素重排后当做map的Key值取出Value值查看是否为1(不是重复元素),
是便添加到set中(排序)
*/
for(int i=0;i<list.size();++i)
{
if(map.get(reset(list.get(i)))==1)
set.add(list.get(i));
}
//3.输出
for(String str:set)
System.out.println(str);
}
//重排方法
public static String reset(String str)
{
char []arr = str.toLowerCase().toCharArray();
Arrays.sort(arr);
return new String(arr);
}
}