Временная сложность алгоритма подстроки Longest Palindromi c - PullRequest
0 голосов
/ 29 апреля 2020

Я написал решение для поиска самой длинной подстроки Палиндроми c в строке. Код:

        int index = 0, maxie = 0, N = s.length();
        string result;
        while(index < N){
            int left = index, right = index, length = 1;
            while(left >= 0 && right < N && s[left] == s[right]){
                if(length > maxie){
                    maxie = length;
                    result = s.substr(left, maxie);
                }
                length+= 2;
                left--;
                right++;
            }


            left = index, right = index + 1;
            length = 0;
            while(left >= 0 && right < N && s[left] == s[right]){
                length+= 2;
                if(length > maxie){
                    maxie = length;
                    result = s.substr(left, maxie);
                }
                left--;
                right++;
            }
            index++;
        }
        return result;

Я не очень разбираюсь в анализе сложности времени, хотя прошел через основы, когда циклы ПРОСТЫ.

Но в этом случае я понимаю, что внешний l oop будет работать N раз. Но я не могу понять временную сложность внутренних циклов, так как они будут иметь переменное время работы, основанное на значении String и Current Index of Outer L oop.

Я предполагаю, что наихудший возможный случай для этой проблемы было бы, где все буквы одинаковы. Как 'aaaaa'.

Чтобы упростить объяснение, если я предполагаю, что функция substr требует постоянного времени, как мне рассчитать общую сложность этого алгоритма по времени?

Заранее спасибо. Любая помощь очень ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...