即字符只要一样多而且有对应的,就判断为相等,要高效的啊
[code="java"]
private boolean compare(String a,String b){
String a = "";
String b = "";
int aL = a.length();
int bL = b.length();
boolean result = true;
for(int i=0;i<aL&&result;i++){
char x = a.charAt(i);
for(int j=0;j<bL&&result;j++){
int xb=b.indexOf(x);
if(xb==-1) result=false;
else {
b=b.substring(0,xb)+b.substring(xb+1);
}
}
}
}
return result;
[/code]
[code="java"]
public class Test {
public static void main(String[] args) {
String str01 = "aabc";
String str02 = "abac";
String str03 = "bcaa";
byte[] b01 = str01.getBytes();
byte[] b02 = str02.getBytes();
byte[] b03 = str03.getBytes();
b01 = sort(b01);
b02 = sort(b02);
b03 = sort(b03);
System.out.println(str01 + "==" + str02 + " is " + compare(b01, b02));
System.out.println(str01 + "==" + str03 + " is " + compare(b01, b03));
System.out.println(str02 + "==" + str03 + " is " + compare(b02, b03));
}
private static byte[] sort(byte[] b) {
for (int i = 0; i < b.length; i++) {
byte m = b[i];
for (int j = i + 1; j < b.length; j++) {
byte n = b[j];
if (m < n) {
b[i] = n;
b[j] = m;
m = n;
}
}
}
return b;
}
private static boolean compare(byte[] ba, byte[] bb) {
if (ba.length != bb.length) {
return false;
}
for (int i = 0; i < ba.length; i++) {
if (ba[i] != bb[i]) {
return false;
}
}
return true;
}
}
[/code]
做个参考。