关于简单C++函数逻辑的问题(is_palindrome)
Question about the logic of a simple C++ function (is_palindrome)
下面的函数应该检查输入参数是否为回文和 return true/false.
我知道代码有错误,应该是:int i = text.size() - 1;
问题:如果我不加“-1”并打印出text和textR,它们都会是"madam"并且在我理解的时候检查 (text == textR) 它应该是真的。但是,它 return false
。
有人可以解释一下我错过了什么吗?
我知道这与 string.size()
和字符串内容不是一回事有关,字符串索引以 0 开头...我仍然不完全明白为什么 text !=文本R。
#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";
}
text[text.size()]
是不可打印的 '[=11=]'
(空字符)。
所以 TextR
是 "[=13=]madam"
而不是预期的 "madam"
。
答案已给出并被接受。好
此外,我想为这个功能给出一个或多或少的标准解决方案的答案。
这是一个典型的单衬垫:
#include <iostream>
#include <string>
bool is_palindrome(const std::string& s) { return s == std::string(s.crbegin(), s.crend()); };
int main()
{
std::cout << "Is HannaH a palindrome?: " << is_palindrome("HannaH") << "\n";
return 0;
}
下面的函数应该检查输入参数是否为回文和 return true/false.
我知道代码有错误,应该是:int i = text.size() - 1;
问题:如果我不加“-1”并打印出text和textR,它们都会是"madam"并且在我理解的时候检查 (text == textR) 它应该是真的。但是,它 return false
。
有人可以解释一下我错过了什么吗?
我知道这与 string.size()
和字符串内容不是一回事有关,字符串索引以 0 开头...我仍然不完全明白为什么 text !=文本R。
#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";
}
text[text.size()]
是不可打印的 '[=11=]'
(空字符)。
所以 TextR
是 "[=13=]madam"
而不是预期的 "madam"
。
答案已给出并被接受。好
此外,我想为这个功能给出一个或多或少的标准解决方案的答案。
这是一个典型的单衬垫:
#include <iostream>
#include <string>
bool is_palindrome(const std::string& s) { return s == std::string(s.crbegin(), s.crend()); };
int main()
{
std::cout << "Is HannaH a palindrome?: " << is_palindrome("HannaH") << "\n";
return 0;
}