【发布时间】:2019-06-18 09:03:22
【问题描述】:
这是我为检查 C++ 中的回文词而构建的程序。它不能以通常的方式工作(反转单词并检查是否相同),但它直接从开头和结尾检查每个单词;
女士,阿达,汉娜,赛车是我尝试过的词,它们似乎是正确的。
#include <iostream>
std::string is_palindrome(std::string text)
{
int length=text.size(); //No. of characters
int index=text.size()-1; //No. of indexes
int i;
int x=0; //To store no of same character from both ends
for(i=0;i<=index;i++)
{
if(text[i]==text[index-i])
{x++;}
}
if(x==length) //If all characters are same form opp ends
{
return "true";
}
else
{
return "false";
}
}
int main() {
std::cout << is_palindrome("madam") << "\n";
std::cout << is_palindrome("happy") << "\n";
}
结果是正确的,我只是找不到这样的代码,所以只想检查一下。
【问题讨论】:
-
你可能想把这个发到codereview.stackexchange.com。
-
我认为你不应该遍历所有字符,而应该只遍历一半以上的字符,即
for(int i = 0; i <= index / 2; i++)。只要任何对不相等,您就可以退出(假)而不是计算相等的字符。 -
另外,你可以检查
if(text[i] != text[index-i]) return false;是否是x。 -
我不会返回
std::string,而是返回bool,在需要时将bool转换为string比将"true"/"false"转换为@ 要容易得多987654333@以备不时之需
标签: c++ string algorithm function palindrome