假设字符串类似这样的aba和aab就相等,现在随便给你二组字符串,请编程比较他们看是否相等

解决方案 »

  1.   

    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);
    }
    这样差不多了吧
      

  2.   

    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;
        }
    }
      

  3.   

    忘了考虑传入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);
    }