在优先考虑时间/长字符串/短字符串的同时查找两个字符串是否排列

时间:2017-09-11 20:48:24

标签: java string hashmap permutation xor

所以我试图找到最好的实现方法来查找两个字符串是否是三种情况下的相互排列:1。非常长的输入字符串,2。非常长的输入字符串和优先级速度,以及3.非常短输入字符串和优先级空间。

我对第一种情况的实现是使用XOR:

if (string1.length() != string2.length())
    {
        return false;
    }
    int find = 0;
    for(int i = 0; i < string1.length();i++ ){
        find ^= string1.charAt(i) ^ string2.charAt(i);
    }


    return find == 0;

我对第二种情况的实现是使用我尚未实现的哈希映射或哈希集。

我对最后一个的实现是对字符串进行排序,并使用java .equals来比较字符串是否相等。

if (string1.length() != string2.length()) {
        return false;
    }
    char[] a = string1.toCharArray();
    char[] b = string2.toCharArray();

    Arrays.sort(a);
    Arrays.sort(b);

    return Arrays.equals(a, b);

**测试输入:2个空字符串; “ab”“ba”; “abc”“acd”; “老鼠”“明星**”; “\ u263A BYE NOW !!” “!现在离开!\ u263A”

这三种实现最适合这些情况吗?

0 个答案:

没有答案