有两个字符串组A,B
求这两字符串数组元素字符序列相同并且长度最长的元素
(即:两数组的交集中长度最长的字符串)
求这两字符串数组元素字符序列相同并且长度最长的元素
(即:两数组的交集中长度最长的字符串)
解决方案 »
- 关于编码转换,为何无效?
- eclipse的语言包在那里下载呢?
- 关于SWT的,请懂的大虾教教小弟
- jFilechooser 可以打开根目录吗?
- 用Eclipse运行J2ME程序,运行时如果当前修改后代码未保存,则运行的是未保存的修改代码
- 显示A表中B表没有的数据这句SQL怎么写
- 标准MD5是不是有好几个版本 还是只有一个版本?
- 正在学java,很迷茫,不知道学到什么程度才能出来见人,该怎么办呢?请大家给点意见
- 如何解决Solaris8&JDK1.4.2_06下JSP乱码问题
- 关于上传文件到其它机器上的问题
- 有来问大家一些基础的东西了
- setActionCommand()与getActionCommand() 的问题...
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的代价是是很小 是常数级的
数据结构中都的讲到
不是说没代价