比如
String[] a={"abc","def","111","define"};
string[] b={"ooo","define","abc","技术问题","中国"};数组a,b是动态计算出来的,数量并非如上面那样是固定的。
怎样用一个比较好的算法找出其中a,b中都有的"def","define"?
String[] a={"abc","def","111","define"};
string[] b={"ooo","define","abc","技术问题","中国"};数组a,b是动态计算出来的,数量并非如上面那样是固定的。
怎样用一个比较好的算法找出其中a,b中都有的"def","define"?
解决方案 »
- System.out.println("aaa 88888c".matches(".{3}\\b\\d{5}.")); 看看这个正则表达式问题在哪里?
- JspSmartUpload中load方法挂起了
- filter能控制servlet的访问吗吗
- 结构转换
- 如何将字符串"\\w"转换成"\\\\w"
- 这句语句错在哪?
- 分多了,散一些。再讨论interface!
- 怎么提高sql语句查询的能力.
- 在java applet 中可以播放.au格式以外的媒体文件吗?(.wav等)
- 各位高手:String 和 StringBuffer这两个类有什么区别。
- 分页显示问题
- JTable的内容是取自数据库中的某个表。如何添加一行,用MVC模式实现?
String s="";
for(int i=0;i<a.length;i++){
for(int j=0;j<b.length;j++){
if(a[i].equals(b[j]))
s=s+a[i];
break;
}
}
大概写了点,思路是对你,你自己调调
import java.util.List;public class test { public static void main(String[] args) {
String[] a = {"abc","def","111","define"};
String[] b = {"ooo","define","abc","技术问题","中国"};
List list = new ArrayList();
for (int i = 0; i < a.length; i++) {
for (int j0 = 0; j0 < b.length; j0++) {
if(b[j0].compareTo(a[i]) == 0) {
list.add(b[j0]);
}
}
}
}
}
import java.util.Arrays;
import java.util.List;public class CollectioinTest
{
public static void main(String[] args)
{
String[] a={"abc","def","111","define"};
String[] b={"ooo","define","abc","技术问题","中国"}; List shared = new ArrayList(Arrays.asList(a));
shared.retainAll(Arrays.asList(b));
System.out.println(shared);
}
}
at test.TestPoJo.main(TestPoJo.java:39)
1、二重循环的时间复杂度是o(n^2)
2、我假定每个数组内部无重复元素
(1)将两个数组和成一个数组,时间复杂o(n)
(2) 对新数组实现基数排序,时间复杂o(d(n+radix));d为最大字符串长度,radix为所有字符串 中出现的字符种类数目。
(3)统计新数组中重复元素的个数
这个算法虽然不是最优秀,但时间复杂度也控制在o(n)了,如何?
3、再给一算法,分别对两个数组做基数排序,再利用归并排序算法的思想比较出重复元素 这些东西估计只有我这样的学生才会用到,呵呵