devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻

Что не так в элементарном коде для поиска максимального палиндрома?

Задача: найти максимальную подстроку палиндром в строке. Т.е.
Входные данные:
"wow"

Выходные данные:
"wow"


Входные данные:
"123wow123"

Выходные данные:
"wow"


Входные данные:
"abcdebob"

Выходные данные:
"bob"


Входные данные:
"rokor aba"

Выходные данные:
"rokor"


Моё решение, которое не проходит один скрытый тест:
bool isSubstringPalindrom(const std::string& str, size_t pos, size_t length)
{
    for (size_t i = 0; i < length / 2; ++i) {
        if (str[pos + i] != str[pos + length - i - 1])
            return false;
    }
    
    return true;
}

std::string getStringWithQuotes(const std::string& str)
{
    return std::string("\"") + str + "\"";
}

std::string longestPalindromeSubstr(string s) {
    if (s.size() < 3)
        return getStringWithQuotes("");
    
    // remove FUCKING quotes
    s = s.substr(1, s.size() - 2);
    
    for (size_t substrLength = s.size(); substrLength > 1; --substrLength) {
        size_t substringsCount = s.size() - substrLength + 1;
        for (size_t i = 0; i < substringsCount; ++i) {
            if (isSubstringPalindrom(s, i, substrLength))
                return getStringWithQuotes(s.substr(i, substrLength));
            std::cout << s.substr(i, substrLength) << std::endl;
        }
    }
    
    return getStringWithQuotes(s.substr(0, 1));
}
  • Вопрос задан
  • 619 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы