我有两个ArrayList<String>
s。一个包含标点符号和大写字母,另一个则删除。在读取打印条件时打印ArrayList
列表1:
File word: it's
File word: Sit
File word: yes-man
File word: murdered
File word: ok
File word: DereDrum
File word: Hello
File word: Friend
列表2:
Edited word: its
Edited word: sit
Edited word: yesman
Edited word: murdered
Edited word: ok
Edited word: deredrum
Edited word: hello
Edited word: friend
当时的想法是检查,看看哪些词是彼此的字谜。如果他们成功了,所有我想要做的就是重新打印,但与在同一行中相互字谜的话:
it's Sit
yes-man
murdered DereDrum
ok
hello
friend
我试图做到这一点,像这样:
for (int i = 0; i < words.size(); i++)
{
System.out.print(words.get(i));
for (int j = i+1; j < grams.size(); j++)
{
anagramChecker(grams.get(i),"",grams.get(j),words.get(j));
}
System.out.println();
}
我记住的方式是这个for循环持续List1(单词)的大小并打印它正在查看的单词。然后,我用我的anagramChecker:
public static void anagramChecker(String s1,String s2,String checked,String word)
{
if(s1.length() == 0)
{
if(s2.equals(checked))
{
System.out.println(" " + word);
return;
}
}
for(int i = 0 ; i < s1.length() ; i++)
{
anagramChecker(s1.substring(0, i) + s1.substring(i+1, s1.length()),s2 + s1.charAt(i),checked,word);
}
}
此方法不起作用,它的输出是这样的:
it's
Sit yes-man
yes-man
yes-man
yes-man
yes-man
yes-man
yes-man
yes-man
yes-man
murdered
ok
DereDrum Hello
Hello
Friend
我试图用一张地图,这样我可以的话后,按字母顺序本身是排序的话在第二个列表中按字母顺序排序。这有相同的看起来输出。
对于anagram检查不使用递归。将每个字符串复制到'char []',***对数组进行排序,然后进行简单的字符串比较。显然,首先检查等长。 – 2013-03-14 04:50:09
@Jim Garrison如果我这样做,第一个ArrayList不会被第二个ArrayList排序。由于我试图打印第一个的结果,就像第二个结果一样,我不确定这会起作用。 – 2013-03-14 05:16:35