Предполагается, что приведенная ниже функция проверяет, является ли входной параметр палиндромом, и возвращает true / false.
Я знаю, что в коде есть ошибка, это должно быть: int i = text. size () - 1 ;
Вопрос: если я не добавлю «-1» и не выведу текст и textR, оба они будут «мадам» "и в моем понимании, когда я проверяю (text == textR), это должно быть правдой. Однако возвращается false
.
Может кто-нибудь объяснить, что мне не хватает?
Я понимаю, что это как-то связано с string.size()
, а содержимое строки не одно и то же, а индекс строки начинается с 0 ... Я до сих пор не до конца понимаю, почему текст! = TextR ,
#include <iostream>
#include <bits/stdc++.h>
// Define is_palindrome() here:
bool is_palindrome(std::string text) {
// create an empty string to store a reversed version of text
std::string textR;
// iterating backward over text and adding each character to textR
for (int i = text.size(); i >= 0; i--) {
textR.push_back(text[i]);
}
std::cout << text << std::endl;
std::cout << textR << std::endl;
// check if the reversed text is the same as text; return true or false
if (text == textR) {
return true;
} else {
return false;
}
}
int main() {
std::cout << is_palindrome("madam") << "\n";
}