假设aabc abac bcaa等象这样的字符串要判断为相等,有没什么好办法?

即字符只要一样多而且有对应的,就判断为相等,要高效的啊

[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]
做个参考。