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