По существу, временная сложность вашего алгоритма составляет O(2^n)
Допустим, скажем, f(n)
- это функция для вычисления палиндрома для строки с длиной n
, в худшем случае мы можем видеть, что
f(n) = 2*f(n - 1)
f(n - 1) = 2*f(n - 2)
...
f(1) = 1
-> f(n)
сложность времени равна O(2^n)
Таким образом, для длинной строки ваша программа будет работать долго.Как и в примере, строка с 29 символами потребует O (2 ^ 29) или O (5 * 10 ^ 8) операций.
Примечание : на самом деле, каждая операция требует двух дополнительныхОперации substring
и isPalindrome
, из-за которых сложность времени составляет O (n * 2 ^ n), а не только O (2 ^ n)
Как уменьшить сложность времени?Динамическое программирование должно быть ответом