public static equals(String s1,String s2){ if (s1.length() != s2.length()) return false; if (s1.equals(s2)) return true; if (s1 == s2) return true; char[] ca1 = s1.toCharArray(); char[] ca2 = s2.toCharArray(); Arrays.sort(ca1); Arrays.sort(ca2); return Arrays.equals(ca1,ca2); } 这样差不多了吧
public class Test { public static void main(String[] args) { String sa = "abaaa"; String sb = "aabaa"; System.out.println(isEqualsIgnoreSeq(sa, sb)); }
private static boolean isEqualsIgnoreSeq(String a, String b) { if(a == b) { return true; } if(a == null || b == null || a.length() != b.length()) { return false; } char[] chsa = a.toCharArray(); char[] chsb = b.toCharArray(); for(int i = 0, k = 0; i < chsb.length; i++, k++) { int p = indexOf(chsb, chsa[i], k, chsa.length); if(p < 0) { return false; } swap(chsa, k, p); } return true; }
private static int indexOf(char[] chs, char c, int start, int end) { while(start < end) { if(chs[start] == c) { return start; } start++; } return -1; }
private static void swap(char[] chs, int a, int b) { char t = chs[a]; chs[a] = chs[b]; chs[b] = t; } }
忘了考虑传入null了 public static equals(String s1,String s2){ if (s1 == null || s2 == null) return false; if (s1.length() != s2.length()) return false; if (s1.equals(s2)) return true; if (s1 == s2) return true; char[] ca1 = s1.toCharArray(); char[] ca2 = s2.toCharArray(); Arrays.sort(ca1); Arrays.sort(ca2); return Arrays.equals(ca1,ca2); }
if (s1.length() != s2.length()) return false;
if (s1.equals(s2)) return true;
if (s1 == s2) return true; char[] ca1 = s1.toCharArray();
char[] ca2 = s2.toCharArray();
Arrays.sort(ca1);
Arrays.sort(ca2);
return Arrays.equals(ca1,ca2);
}
这样差不多了吧
String sa = "abaaa";
String sb = "aabaa";
System.out.println(isEqualsIgnoreSeq(sa, sb));
}
private static boolean isEqualsIgnoreSeq(String a, String b) {
if(a == b) {
return true;
}
if(a == null || b == null || a.length() != b.length()) {
return false;
}
char[] chsa = a.toCharArray();
char[] chsb = b.toCharArray();
for(int i = 0, k = 0; i < chsb.length; i++, k++) {
int p = indexOf(chsb, chsa[i], k, chsa.length);
if(p < 0) {
return false;
}
swap(chsa, k, p);
}
return true;
}
private static int indexOf(char[] chs, char c, int start, int end) {
while(start < end) {
if(chs[start] == c) {
return start;
}
start++;
}
return -1;
}
private static void swap(char[] chs, int a, int b) {
char t = chs[a];
chs[a] = chs[b];
chs[b] = t;
}
}
public static equals(String s1,String s2){
if (s1 == null || s2 == null) return false;
if (s1.length() != s2.length()) return false;
if (s1.equals(s2)) return true;
if (s1 == s2) return true; char[] ca1 = s1.toCharArray();
char[] ca2 = s2.toCharArray();
Arrays.sort(ca1);
Arrays.sort(ca2);
return Arrays.equals(ca1,ca2);
}