Приведенный ниже код относится к программе проверки палиндрома предложений. Я новичок ie программист, поэтому мне сложно отлаживать этот код. Он показывает неправильный вывод. Например, предложение «Человек, план, канал: Панама» дает ложный результат вместо истинного. (Пробелы и знаки препинания следует игнорировать.)
#include <iostream>
class Solution
{
public:
bool isPalindrome(std::string s)
{
int l, i;
i = 0;
l = s.length();
while (i <= (l - 1))
{
if (s[i] == ' ' || ispunct(s[i]) == true)
i++;
else if (s[l - 1] == ' ' || ispunct(s[l - 1]) == true)
l--;
else if (tolower(s[i]) == tolower(s[l - 1]))
{
l--;
i++;
}
else
return false;
}
return true;
}
};
int main(void)
{
Solution s;
const std::string text = "Panama";
std::cout << s.isPalindrome(text);
return 0;
}