【发布时间】:2017-02-10 04:58:36
【问题描述】:
我写了这个函数,我认为运行时间是 O(nlogN),但我不确定。另外,是否有更清洁的方式来编写这个(java)?我觉得一个更有经验的程序员可以用更少的代码行来做到这一点。
public static boolean anagramCheck(String strA, String strB){
if(strA.length() != strB.length()){
return false;
}
char arrA[] = strA.toCharArray();
char arrB[] = strB.toCharArray();
Arrays.sort(arrA);
Arrays.sort(arrB);
int j = 0;
for(char s : arrA){
if(s != arrB[j]){
return false;
}
j++;
}
return true;
}
【问题讨论】:
-
O(n) - 使用哈希表计算频率并与第二个比较。
-
@AlexeiLevenkov,这几乎不是 O(n)。您冒着在哈希表中发生冲突的风险。如果有,它们会降低性能。
标签: java runtime permutation anagram