[英]Printing an ArrayList while reading it for print conditions
我有兩個ArrayList<String>
。 一個包含標點和大寫的單詞,另一個將其刪除。
清單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
這個想法是檢查並查看哪些單詞是彼此的字謎。 如果是的話,我要做的就是重新打印它們,但每個字詞之間都帶有字謎(anagram):
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(words)的大小並打印它正在查看的單詞。 然后,我使用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
我嘗試使用地圖,以便在單詞本身在第二個列表中按字母順序排序后,可以按字母順序對單詞進行排序。 具有大致相同的輸出。
從這里重新使用字謎邏輯。
public boolean areAnagrams(String s1, String s2) {
//TODO : Strip punctuations from s1 and s2
char[] ch1 = s1.toCharArray();
char[] ch2 = s2.toCharArray();
Arrays.sort(ch1);
Arrays.sort(ch2);
return Arrays.equals(ch1,ch2);
}
遍歷兩個列表並檢查areAnagrams
true,然后打印出來。
for (int i=0;i<size;i++) {
String first = firstList.get(i);
String second = secondList.get(i);
if (areAnagrams (first, second) {
System.out.println(first + " " + second);
}
}
嘗試下面的代碼。
import java.util.ArrayList;
import java.util.List;
public class Client {
public static void main(String[] args) {
List<String> lst1 = new ArrayList<String>();
List<String> lst2 = new ArrayList<String>();
lst1.add("it's");
lst1.add("Sit");
lst1.add("yes-man");
lst1.add("murdered");
lst1.add("ok");
lst1.add("DereDrum");
lst1.add("Hello");
lst1.add("Friend");
lst2.add("its");
lst2.add("sit");
lst2.add("yesman");
lst2.add("murdered");
lst2.add("ok");
lst2.add("deredrum");
lst2.add("hello");
lst2.add("friend");
for (int i = 0; i < lst2.size(); i++) {
String original = lst2.get(i);
StringBuffer buff = new StringBuffer(original);
buff.reverse();
if (lst2.contains(buff.toString())) {
System.out.println(lst1.get(i) + " "
+ lst1.get(lst2.indexOf(buff.toString())));
lst1.remove(lst2.indexOf(buff.toString()));
lst2.remove(buff.toString());
} else {
System.out.println(lst1.get(i));
}
}
}
}
和輸出將。
it's
Sit
yes-man
murdered DereDrum
ok
Hello
Friend
您可以單擊下面的鏈接運行並在線檢查。
再做一次...而其他人已經告訴了您要點。 將其放入char數組,對其進行排序,比較,完成。
package array;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
public class Anagrams {
private static ArrayList<Character> convert(String txt) {
ArrayList<Character> alph = new ArrayList<Character>();
for (int i = 0; i < txt.length(); i++)
if (Character.isLetter(txt.charAt(i)))
alph.add(Character.toLowerCase(txt.charAt(i)));
Collections.sort(alph);
return alph;
}
public static void main(String[] args) {
ArrayList<String> first = new ArrayList<String>();
first.add("it's");
first.add("Sit");
first.add("yes-man");
first.add("murdered");
first.add("ok");
first.add("DereDrum");
first.add("Hello");
first.add("Friend");
ArrayList<String> second = new ArrayList<String>();
second.add("its");
second.add("sit");
second.add("yesman");
second.add("murdered");
second.add("ok");
second.add("deredrum");
second.add("hello");
second.add("friend");
ArrayList<Integer> checked = new ArrayList<Integer>();
for (int i = 0; i < first.size(); i++) {
String line = "";
if (!checked.contains(i))
line += first.get(i) + " ";
ArrayList<Character> firstChrAry = convert(first.get(i));
for (int j = i + 1; j < second.size(); j++) {
ArrayList<Character> secondChrAry = convert(second.get(j));
if (firstChrAry.size() == secondChrAry.size()) {
if (firstChrAry.equals(secondChrAry)) {
line += first.get(j);
checked.add(j);
}
}
}
if (!line.equals(""))
System.out.println(line);
}
}
}
在此處添加我的輸出結果:
坐吧
好的
被謀殺的德里鼓
好
你好
友人
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.