Java 什么';这个字谜检查器的时间复杂度是多少?
这种方法的时间复杂度是多少?我读到字符串的Java 什么';这个字谜检查器的时间复杂度是多少?,java,big-o,Java,Big O,这种方法的时间复杂度是多少?我读到字符串的contains()方法的时间复杂度是O(n),我在循环中使用它,在输入字符串上的时间复杂度是O(n2) 公共静态布尔isAnagram(字符串str,字符串str1){ 如果(str.length()!=str1.length()){ 返回false; } 对于(int i=0;i
contains()
方法的时间复杂度是O(n),我在循环中使用它,在输入字符串上的时间复杂度是O(n2)
公共静态布尔isAnagram(字符串str,字符串str1){
如果(str.length()!=str1.length()){
返回false;
}
对于(int i=0;i
是O(n^2),因为for循环有n次迭代,每个迭代调用包含两次是O(n^2),因为for循环有n次迭代,每个迭代调用包含两次将是一个“aab”的字谜。@k5_uu公平地说,没有人说这个方法可以判断输入是否是字谜,这只是你基于方法名称的假设。@abc是的,问题标题str.contains
是O(n),你运行了2n次,所以你会得到O(n^2)这个方法是错误的,“abb”将是一个“aab”的字谜@k5_uu公平地说,没有人说这个方法可以判断输入是否是字谜,这只是基于方法名称的假设。@abc是的,还有问题的标题
public static boolean isAnagram(String str, String str1) {
if(str.length() != str1.length()) {
return false;
}
for(int i = 0; i < str.length(); i++) {
String letter = String.valueOf(str.charAt(i));
if(!str1.contains(letter)) {
return false;
}
letter = String.valueOf(str1.charAt(i));
if(!str.contains(letter)) {
return false;
}
}
return true;
}