Java 如何确定两个不同的单词是否有相同的字母?
我有一个单词列表,其中包含字典中的所有单词,我应该使用该列表查找输入的单词是否与其他单词具有相同的字符 我尝试使用Arrays.sort()方法对每个单词和输入单词按字母顺序排列,然后使用.equals()方法比较这两个字符串。然后打印.equals()为true的实例 然而,当我这样做时,输出只是打印列表中的每个单词,我不知道为什么 为清晰起见进行编辑:目的是确定列表中与输入匹配的单词。Java 如何确定两个不同的单词是否有相同的字母?,java,arrays,string,sorting,arraylist,Java,Arrays,String,Sorting,Arraylist,我有一个单词列表,其中包含字典中的所有单词,我应该使用该列表查找输入的单词是否与其他单词具有相同的字符 我尝试使用Arrays.sort()方法对每个单词和输入单词按字母顺序排列,然后使用.equals()方法比较这两个字符串。然后打印.equals()为true的实例 然而,当我这样做时,输出只是打印列表中的每个单词,我不知道为什么 为清晰起见进行编辑:目的是确定列表中与输入匹配的单词。 例如:如果我输入act,所有带有字母a、c和t的单词都将作为输出。在这种情况下,唯一的输出将是cat。简单
例如:如果我输入act,所有带有字母a、c和t的单词都将作为输出。在这种情况下,唯一的输出将是cat。简单算法,以确定两个单词是否共享相同的字母:
Map anagrams=newhashmap();
for(字符串s:inputList)
{
key=sort(s);//以字符串形式返回s,按字符排序,不重要
if(anagrams.get(key)==null)
{
put(key,newlinkedlist());
}
字谜。获取(键)。添加(s);
}
这个问题并不十分清楚,但我将提供一个与我见过的其他问题不同的解决方案: 您还可以使用list
removeAll
比较两个列表之间的常用字母
listA.removeAll(listB); //listA will contain any letters not common to listB
if (listA.size() == 0) {
return true;
}
测试输出:
apppppppleeeeeeee <-- Input
[a, p, p, p, p, p, p, p, l, e, e, e, e, e, e, e, e] //String split 1
[a, p, p, l, e] //String split 2
letters are the same
appleeeeeef <-- Input
[a, p, p, l, e, e, e, e, e, e, f]
[a, p, p, l, e]
contains different letters
apppppleeeeee向我们展示代码。就像一个乱七八糟的单词?那么茶
也会搭配吃
?这个问题不是特别清楚。我不知道为什么对我的答案投反对票,但如果这不符合你的要求,请编辑你的问题,让我们知道你在问什么。
listA.removeAll(listB); //listA will contain any letters not common to listB
if (listA.size() == 0) {
return true;
}
apppppppleeeeeeee <-- Input
[a, p, p, p, p, p, p, p, l, e, e, e, e, e, e, e, e] //String split 1
[a, p, p, l, e] //String split 2
letters are the same
appleeeeeef <-- Input
[a, p, p, l, e, e, e, e, e, e, f]
[a, p, p, l, e]
contains different letters
public class Main {
public Main () {
Scanner scan;
scan = new Scanner(System.in);
String input = scan.nextLine();
if(check(split(input), split("apple"))) {
System.out.println("letters are the same");
}
else {
System.out.println("contains different letters");
}
}
public boolean check(ArrayList<String> listA, ArrayList<String> listB) {
listA.removeAll(listB); //listA will contain any letters not common to listB
if (listA.size() == 0)
return true;
return false;
}
public ArrayList<String> split(String word) {
String[] splitMe = word.split("(?!^)");
ArrayList<String> splitList = new ArrayList<String>();
for (int i = 0; i < splitMe.length; i++) {
splitList.add(splitMe[i]);
}
System.out.println(splitList);
return splitList;
}
public static void main(String[] args) {
Main main = new Main();
}
}