Итак, я начал изучать C ++ две недели назад и хочу создать программу, которая проверяет, является ли строка палиндромом или нет.Я пробовал разные способы, включая метод str1 == str2, следующим образом:
#include<iostream>
#include<string>
using namespace std;
string empty;
string word;
bool inverse(string word)
{
for (int i=0;i<=word.length();i++)
{
empty+=word[word.length()-i];
}
return empty==word;
}
int main()
{
cout<<inverse("civic");
}
Выход всегда 0
Второй способ: метод str1.compare (str2)
#include<iostream>
#include<string>
using namespace std;
string empty;
string word;
bool inverse(string word)
{
for (int i=0;i<=word.length();i++)
{empty+=word[word.length()-i];}
if (word.compare(empty))
return true;
else
return false;
}
int main()
{
if (inverse(word)==true)
cout<<"is a palindrome";
else
cout<<"is not a palindrome";
cout<<inverse("ano");
cout<<inverse("madam");
}
вывод всегда: это палиндром1 (с 1 или 2 в конце «палиндром»), даже если строка не палиндром.
пожалуйста, объясните мне, какие ошибки я допустили как я могу их исправить.Кроме того, если я хочу, чтобы моя программа обрабатывала строку с пробелами, как я могу это сделать?