二维数组 求解(java) !!!!!
String[][] A = a4 String[][] B = q1 a2 a3 a5
a4 a1 q2 a1 a2 a3 a5
a4 a1 a5 q3 a1 a4 a5
a4 a1 a5 a3 q4 a3
q5 a1 a2 a3
大体是说:A的第一行a4,先遍历B的每一,二,三,四,五行,第2组不包括,返回0;
A的第二行a4,a1,遍历第B的每一行,B第1行不包括; B第2行不完全包括; B第3行不完全包括; B第4行不包括; B第5行不完全包括, 返回0;
A的第三行a4,a1,a5,遍历B的每一行,B第1行不完全包括; B第2行不完全包括; B第3行完全包括, 返回q3; B第4行不包括; B第5行不完全包括。
A的第四行a4,a1,a5,a3,遍历B的每一行,B第1行不完全包括; B第2行不完全包括; B第3行完全包括, 返回q3;B第4行包括, 返回q4;B第5行不完全包括。
所以打印出的结果是:String[][] result = 0
0
q3
q3 q4
麻烦高手帮忙写一下java code。。谢谢~
补充:A的每一行都要遍历B一次!!如果A的[i]行完全包括B的[j]行就返回那一行第1个元素。 如果A的[i]行完全不包括所有的B的[j]行就返回空。。 上面例子的结果应该是 string[][] result = {{” “},{“ ”},{”q3"},{“q3", "q4"}}. 这该怎么写这个code呀?
** B遍历的时候不考虑 q(n) 的位置
用ArrayList 是不是能好点。
ps。为什么消息通知还有一个人的回答,为什么这里我看不到呀?
答案:public class Demo {
public static void main(String[] args) {
String[][] a = new String[][]{
new String[]{"a4"},
new String[]{"a4","a1"},
new String[]{"a4","a1","a5"},
new String[]{"a4","a1","a5","a3"}};
String[][] b = new String[][]{
new String[]{"q1", "a2", "a3", "a5"},
new String[]{"q2", "a1", "a2", "a3", "a5"},
new String[]{"q3", "a1", "a4", "a5"},
new String[]{"q4", "a3"},
new String[]{"q5", "a1", "a2", "a3"}
};
for(String[] ss : a) {
for(String s : ss) {
System.out.print(s);
}
System.out.println();
}
System.out.println("----------------------------");
for(String[] ss : b) {
for(String s : ss) {
System.out.print(s);
}
System.out.println();
}
String[][] result = new String[4][5];
int row = -1;
for(String[] eachRowA : a) {
row++;
String[] resultRow = new String[5];
for(String[] eachRowB : b) {
String re = check(eachRowA, eachRowB);
if(re != null) {
for(int i=0; i<resultRow.length; i++) {
if(resultRow[i] == null) {
resultRow[i] = re;
break;
}
}
}
}
result[row] = resultRow;
}
System.out.println("-------RESULT -----");
for(String[] ss : result) {
StringBuffer sb = new StringBuffer();
for(String s : ss) {
s = s==null ? "0" : s;
if(sb.length()==0)
sb.append(s).append(" ");
else if(!s.equals("0"))
sb.append(s).append(" ");
}
System.out.println(sb);
}
}
private static String check(String[] s1, String[] s2) {
StringBuffer sb = new StringBuffer();
for(String s11 : s1) {
if(s11 != null)
sb.append(s11).append(",");
}
for(String s22 : s2) {
if(s22.startsWith("q")) continue;
if(!sb.toString().contains(s22))
return null;
}
return s2[0];
}
}
其他:没看懂题目... 没看懂题目
上一个:java的 Frame窗口问题 不好意思各位 我分用完了
下一个:软件开发是不是不只学java啊,单学java能找工作吗