我有一个ArrayList,其中包含大小为1000的字符串。我循环遍历该ArrayList并查找单词并尝试从中形成一个正方形。例如如下:
C A R D
A R E A
R E A R
D A R T
它正在工作,但它涉及大量的嵌套循环,我在这个实例中硬编码循环,我试图形成一个4x4的正方形。
我希望能够灵活地传递方形大小,例如5x5或6x6,依此类推。我该怎么做呢。
如果这只是一个循环,我会传入一个Integer并根据整数循环。但是由于我正在嵌套,所需的For循环次数会因此而混淆。
当我形成4x4的正方形时,我最终循环4次,其中每个循环检查不同的子串以得到正确的正方形。当需要5x5时,我需要5个循环来进行检查。我的意思是解决我增加减少循环的问题,这取决于参数/或循环方式而不创建如此多的For循环。我能否就此得到一些指导。
void makeWord(ArrayList<String> arr, int size){ //want to use this size to determine amount of loop
String first, second, third, fourth;
for (int i = 0; i < arr.size(); i++) {
first = arr.get(i);
for (int j = 0; j < arr.size(); j++) {
if(first.substring(1,2).equals(arr.get(j).substring(0,1)) &&
(!first.equals(arr.get(j)))){
second = arr.get(j);
}
else {
second = " ";
}
if (!second.trim().isEmpty()) {
for (int k = 0; k < arr.size(); k++) {
if (first.substring(2, 3).equals(arr.get(k).substring(0, 1)) &&
second.substring(2, 3).equals(arr.get(k).substring(1, 2)) &&
(!first.equals(arr.get(k)) && (!second.equals(arr.get(k))))) {
third = arr.get(k);
} else {
third = " ";
}
}
}
}
}
}
答案 0 :(得分:0)
我不确定我的问题是否正确,但是如果您正在寻找一种方法来使您的代码更加灵活,以便您可以构建任何大小的方块,那么您的主要问题是您存储字符串的方式
由于您的循环取决于您定义的字符串数,因此您可以通过对字符串变量进行硬编码来限制自己。 或者,您可以简单地将文本存储在数组矩阵中,如下所示:
String[][] matrix = new String[size][size];
这允许您构建任意大小的方块,而且您不再需要所有这些substring()
调用,这也会提高性能。
答案 1 :(得分:0)
我认为以下代码剪辑解决了您的问题:
nextResponder.becomeFirstResponder()