public boolean isEques(String[] a, String[] b) { boolean flag = false; if (a.length != b.length) { flag = false; } else { for (int i = 0; i < a.length; i++) { for (int j = 0; j < a.length; j++) { // pan duan xia tian jian if (a[i] == b[j]) { flag = true; break; }// ke yi bu yao for (int k = 0; k < a.length; k++) { if (flag && (b[i] == a[j])) {break; } else {flag = false; } } } }} return flag; } 这样写感觉效率好低,请高手指点
用String.hashCode(); public class test { public boolean arrayEquals(String[] a,String[] b) { if(a.length!=b.length) return false; else { int ta=0,tb=0 for(int i=0;i<a.length;++i) { ta+=a[i].hashCode(); tb+=b[i].hashCode(); }
boolean flag = false;
if (a.length != b.length) {
flag = false;
} else {
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length; j++) {
// pan duan xia tian jian
if (a[i] == b[j]) {
flag = true;
break;
}// ke yi bu yao
for (int k = 0; k < a.length; k++) {
if (flag && (b[i] == a[j])) {break;
} else {flag = false;
}
}
}
}}
return flag;
}
这样写感觉效率好低,请高手指点
在用集合框架的包装Connections类对list排序,在比较
return list1.containsAll(list2) && list2.containsAll(list1);
就可以了。:P
我感觉你自己写的算法也不大可能再优于O(nlogn)了。
public static void main(String[] arg){
String[] a={"1","2","3","3"};
String[] b={"1","3","3","2"};
boolean equal=true;
for(int i=0; i<a.length; i++)
if(number(a[i],a)!=number(a[i],b)) equal=false;
System.out.println(equal);
}
static int number(String k, String s[]) {
int total=0;
for(int i=0; i<s.length; i++)
if(k.contentEquals(s[i])) total++;
return total;
}
}
int i=0;
boolean equal=true;
while(i<a.length && equal)
if(number(a[i],a)!=number(a[i++],b)) equal=false;
字符串比较应该用equals吧
在用集合框架的包装Connections类对list排序,在比较时间复杂度也是比较高吧,不过实现起来较简单
public class test
{
public boolean arrayEquals(String[] a,String[] b)
{
if(a.length!=b.length)
return false;
else
{
int ta=0,tb=0
for(int i=0;i<a.length;++i)
{
ta+=a[i].hashCode();
tb+=b[i].hashCode();
}
if(ta==tb)
return true;
else return false;
}
}
public static void main(String[] arg)
{
String[] a={"1","2","3","3"};
String[] b={"1","3","3","2"};
System.out.println(this.arrayEquals(a,b));
}}
将其中一个转化为一个List(你自己写),每个元素的值就是数组的一个值,
然后:
int iIndex = 0;
for (iIndex = 0; iIndex < length; iIndex++)
{
while(pElement != NULL)
{
if (数组[iIndex] == pElement->next->m_data)
{
删除当前List本元素节点。
pElement->next = pElement->next->next;
}
}
}
中间有缺的部分,比如List第一个元素的比较等自己完善吧,还有自己写的单链表
在比较删除的时候可以快一些,不过只针对此题目。
删元素的时候别忘了内存泄漏。
比一个删一个也不会犯漏比错误
1, 1,2,2,3,3;
1, 1,1,2,3,3;
这种情况你的算法可能会有问题的。