Является ли строка палиндромом

242
08 сентября 2017, 22:08

По заданию я должен разработать функцию, которая проверяет является ли строка палиндромом или нет. Строка может содержать пунктуацию и пробелы. Например: “Madam,I’m Adam”.По-сути я пытаюсь упростить данную строку до “madamimadam”.

Вот мой код:

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
bool isPal(const string &);
int main()
{
    string input;
    cout << "Enter a string to check if this is a palindrome: ";
    getline(cin, input);
    if (isPal(input))
        cout << "Yes, this is the palindrome." << endl;
    else
        cout << "No, it's not." << endl;
    return 0;
}
bool isPal(const string & st)
{
    string temp = st;
    temp.erase(remove_if(temp.begin(), temp.end(), isspace), temp.end());
    temp.erase(remove_if(temp.begin(), temp.end(), ispunct), temp.end());
    if ( temp == string(temp.rbegin(), temp.rend()))
        return true;
    else
        return false;
}

Простые слова типа otto функция выдает правильно, но с более сложными строками не получается. Подскажите, пожалуйста, что не так.

Answer 1

Не хотите что-то вроде такого?

bool isPal(const string & st)
{
    for(auto b = st.begin(), e = st.end()-1; b < e; ++b, --e)
    {
        while(!isalnum(*b)) ++b;
        while(!isalnum(*e)) --e;
        if (toupper(*b) != toupper(*e)) return false;
    }
    return true;
}

Имеет смысл добавить защиту от дурака - пустые строки, только из пунктуаций и т.п.

Да, для VC++ 2010 замените auto на string::const_iterator.

READ ALSO
Асинхронность MouseArea

Асинхронность MouseArea

Имеется 2 MouseArea, когда я делаю drag для одной, я не могу одновременно делать drag и для другой, хотя они никак не связаны друг с другом, даже не на одном...

289
Не могу получить данные через FormData

Не могу получить данные через FormData

Нужна Ваша помощьУ меня проблема с объектом FormData

352
Как clone() svg элемент?

Как clone() svg элемент?

Проблема в том, что нужно клонировать svg элемент и добавить его в другом местеИспользую jquery clone(), но вместо элемента я получаю в html [Object, Object]

317
Не работает css-класс

Не работает css-класс

Я пишу css-правило

365