Какова временная и пространственная сложность этого кода повторяющегося шаблона подстроки? (Код написан на Java)

Я написал это решение для проблемы LeetCode # 459. https://leetcode.com/problems/repeated-substring-pattern/ I хотите знать время выполнения и пространственную сложность этого решения. Я предполагаю сложность выполнения O (logN N), где N - длина строки. Я прав?

    
    public boolean repeatedSubstringPattern(String s) {
        if (s == null || s.isEmpty()) return true;
        int l = s.length();
        for (int i = l / 2; i > 0; --i) {
            if (l % i == 0 && isThisSubString(s, s.substring(0, i), l / i)) {
                return true;
            }
        }
        return false;
    }
    
      private boolean isThisSubString(String s, String subString, int m) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < m; ++i) {
            sb.append(subString);
        }
        return s.equals(sb.toString());
    }

}

person engima    schedule 25.07.2020    source источник
comment
Да вы правы.   -  person Andreas    schedule 26.07.2020


Ответы (1)


В худшем случае, когда i равно 1, m равно 5. Метод isThisSubString будет перебирать всю строку. Итак, асимптотически в худшем случае это O (n ^ 2).

person Akash    schedule 29.07.2020