不知道这两个方法符不符合你要求。 一个用 HashSet,一个用 纯数组,都进行了局部优化。 时间复杂度,未知。 public static String g(String[] arg0, String[] arg1) { Set<String> set = new HashSet<String>(); String s = null; for (String str : arg0) { set.add(str); } int x = -1; for (String str : arg1) { if (set.contains(str) && str.length() > x) { s = str; x = s.length(); } } return s; } public static String h(String[] arg0, String[] arg1) { Comparator<String> obj = new Comparator<String>() { @Override public int compare(String o1, String o2) { return o2.length() - o1.length(); } }; Arrays.sort(arg0, obj); Arrays.sort(arg1, obj); int k = -1; for (int i = 0; i < arg0.length; i++) { int il = arg0[i].length(); for (int j = k + 1; j < arg1.length; j++) { int jl = arg1[j].length(); if (jl > il) { k = j; } else { if (jl < il) { break; } if (arg0[i].equals(arg1[j])) { return arg0[i]; } } } } return null; }
String s = "";
int m=0,n=0;
for(int i=0;i<a.length;i++){
for(int j=0;j<b.length;j++){
if(a[i].equals(b[j])){
m=a[i].length();
}
if(m>n){
n=m;
s=a[i];
}
}
}
return s;
}
一个用 HashSet,一个用 纯数组,都进行了局部优化。
时间复杂度,未知。 public static String g(String[] arg0, String[] arg1) {
Set<String> set = new HashSet<String>();
String s = null;
for (String str : arg0) {
set.add(str);
}
int x = -1;
for (String str : arg1) {
if (set.contains(str) && str.length() > x) {
s = str;
x = s.length();
}
}
return s;
} public static String h(String[] arg0, String[] arg1) {
Comparator<String> obj = new Comparator<String>() { @Override
public int compare(String o1, String o2) {
return o2.length() - o1.length();
}
};
Arrays.sort(arg0, obj);
Arrays.sort(arg1, obj);
int k = -1;
for (int i = 0; i < arg0.length; i++) {
int il = arg0[i].length();
for (int j = k + 1; j < arg1.length; j++) {
int jl = arg1[j].length();
if (jl > il) {
k = j;
} else {
if (jl < il) {
break;
}
if (arg0[i].equals(arg1[j])) {
return arg0[i];
}
}
}
}
return null;
}
abc130314 的
public static String g(String[] arg0, String[] arg1) {
Set<String> set = new HashSet<String>();
String s = null;
for (String str : arg0) {
set.add(str);
}
int x = -1;
for (String str : arg1) {
if (set.contains(str) && str.length() > x) {
s = str;
x = s.length();
}
}
return s;
}
看样子是这个了
这个复杂度是 O(n)-----!!!
好像小于7个元素 是用的冒泡法 代价是O(n^2)
大于40个好像是快速排序法 这都是由代价的但hash的代价是是很小 是常数级的
数据结构中都的讲到
不是说没代价