【发布时间】:2017-02-10 21:05:44
【问题描述】:
#include <iostream>
#include <string>
using namespace std;
bool isPalindrome(string str){
for(int i = 0; i <= str.length()-1; i++){
if(str[i] != str[str.length()-1-i]){
return false;
}else {
return true;
}
}
}
main(){
string text;
do{
cout << "Enter some Text: " << endl;
cin >> text;
if(isPalindrome(text)){
cout << "The text is a palindrome" << endl;
}
else{
cout << "The text is not a palindrome" << endl;
}
}while(text != "Q");
return 0;
}
有人可以向我解释我的代码有什么问题吗? 如果我输入“otto”作为文本,代码会产生正确的答案。 如果将“ottopo”作为文本输入,代码也可以正常工作,但如果我输入“ottopo”,我会得到“ottopo”是回文的输出,但显然不是。
我似乎遗漏了一些东西,或者可能忽略了一些东西。我知道我可以为此使用 c++ 标准库函数,但我真的很想知道为什么它没有按照我想要的方式工作。
我已经在 java、python、javascript、ruby 等中实现了回文函数......我只是在这个 c++ 代码中找不到我的错误!我知道这很简单,但是太令人沮丧了!
【问题讨论】:
-
调试器是解决此类问题的正确工具。 在询问 Stack Overflow 之前,您应该逐行逐行检查您的代码。如需更多帮助,请阅读How to debug small programs (by Eric Lippert)。至少,您应该 [编辑] 您的问题,以包含一个重现您的问题的 Minimal, Complete, and Verifiable 示例,以及您在调试器中所做的观察。
-
return从函数返回。 -
一方面,
return从您的函数返回。这意味着您的循环仅运行第一次迭代,return语句导致它在该迭代期间返回,并且它永远不会比第一个/最后一个字符比较更进一步。
标签: c++ function palindrome