我有两个2D char数组,一个“大”和一个“小”,想要找到较小的一个位于较大的那个。
示例:
越大越好
jfbsvdfaakjdfb
dsvkfvwaaksghd
aadkfghsgkdldl
aakdfghfgbkjbb
fdkbaadfkgaskj
,较小的是
aa
aa
它位于[0,7]和[2,0]
我想知道比较两者最简单的方法是什么?现在,我正在考虑for循环,它首先比较数组的第一个元素,如果它们不匹配则直到有匹配然后一旦有,更多for循环比较每个元素以查看它们是否匹配。另一种选择是设置HashMaps,但我不确定如何设置或使用它们来获得结果。
在修改其中一条建议后,我想出了这段代码: public static int [] findWaldo(char [] [] large,char [] [] small){
public static void main(String[] args) {
char i [][] = new char[][]{
{'d', 's', 'l', 'e', 'i', 'g', 'h', 'e', 'i', 'j', 'a', 's', 'l', 'd', 'k', 'j'},
{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'W', 'w', 'Z', 'Z', 'Z', 'W', '1', 'l', 'k'},
{'h', 'i', 'j', 'k', 'l', 'm', 'n', 'Z', 'A', 'a', 'Z', 'a', 'Z', '2', 'i', 'n'},
{'o', 'p', 'q', 'r', 's', 't', 'u', 'Z', 'Z', 'L', 'l', 'Z', 'Z', '3', 'i', 'v'},
{'v', 'w', 'x', 'y', 'z', '1', '2', 'Z', 'd', 'Z', 'D', 'd', 'Z', '4', 'q', 'i'},
{'3', '4', '5', '6', '7', '8', '9', 'o', 'Z', 'Z', 'o', 'O', 'Z', '5', 'b', 'v'},
{'k', 'e', '8', '7', '8', '4', 'j', 'f', 'l', 'k', 'a', 'v', '8', '8', 'h', 'j'}
};
char w [][] = new char[][]{
{'W', 'w', '.', '.', '.', 'W', '1'},
{'.', 'A', 'a', '.', 'a', '.', '2'},
{'.', '.', 'L', 'l', '.', '.', '3'},
{'.', 'd', '.', 'D', 'd', '.', '4'},
{'o', '.', '.', 'o', 'O', '.', '5'}
};
find(i, w);
}
public static int[] find(char [][] image, char [][] waldo) {
for (int i = 0; i < waldo.length; i++) {
char[] largerCharArray= large[i];
String largerString = new String(largerCharArray);
//used for debug purposes
char[] array = largerCharArray;
char [] smallCharArray = small[i];
String smallString = new String(smallCharArray);
char[] array1 = smallCharArray;
System.out.println(largerString.indexOf(smallString));
System.out.println(Arrays.toString(array));
System.out.println(Arrays.toString(array1));
}
return null;
}
所有这些代码都是打印较大数组的第一部分,这有什么原因吗?(请忽略小数组中的。's,因为那些将代表任何char,所以它基本上是一个匹配。
答案 0 :(得分:0)
一个简单的实现只会将它们转换为String。字符串是表示字符数组的绝佳对象!它们具有很好的方法,可以使用这种内置的方法。
char[] largerCharArray= {'j','f','b'/*and so on...*/};
String largerString = new String(largerCharArray);
// or largerString = "jfbsvdfaakjdfb";
char [] smallCharArray = {'a', 'a'};
String smallString = new String(smallCharArray);
// or smallString = "aa";
System.out.println(largerString.indexOf(smallString));