比较两个字符串的时间复杂度

时间:2015-11-14 03:41:55

标签: javascript algorithm

ff函数o(nlogn)的运行时间如何?

function isPermutation(a, b) {
    if (a.length !== b.length) {
        return false;
    }
    return a.split("").sort().join() === b.split("").sort().join();
}

你没有检查两个字符串的长度,还是依赖于sort的实现?

1 个答案:

答案 0 :(得分:1)

根据Permutation的定义,当且仅当第一个String中的所有字符也在第二个字符串中时,String才是另一个字符串的排列。

示例"answer""awerns"的排名。

因此,要编写一个算法来检查一个字符串是否是另一个字符串的排列,您只需:

  1. 检查两个字符串的长度是否相同,如果它们不相同则返回false。

  2. 对于String中的每个字母,检查它是否也存在于String 2中。

  3. 上述算法的运行时间为O(n*n),但您可以使用排序来解决同样的问题:

    1. 检查两个字符串的长度是否相同,如果它们不相同则返回false。
    2. 对两个字符串进行排序

    3. 字符串中的每个字符串都是顺序的,例如stringOne[i] == stringTwo[i]

    4. 因此,如果您使用Quick SortMerge Sort这样的良好排序算法,则总体运行时间为O(n*logn)