gpt4 book ai didi

c++ - 计算一个句子中的回文数

转载 作者:行者123 更新时间:2023-11-30 02:06:09 26 4
gpt4 key购买 nike

大家好!下面是一个程序,它要求用户输入一个句子并输出其中的回文数。

#include<iostream>
#include<string>
#include<sstream>

using namespace std;

bool isPalindrome (const std::string& s) {
for (int i = 0; i < (s.length())/2; ++i) {
if (s[i] != s[s.length()-1 - i])
return false;
else
return true;
}
}


int main() {
string sentence;
int counter=0;
cout << "Please input a sentence." << endl;
getline(cin, sentence);
stringstream processtokens(sentence);
for(string word; processtokens >> word;)
if(isPalindrome(word))
++counter;
cout << "Number of Palindromes are : " << counter << endl;
}

它工作得很好。但是例如,当我输入“The quick brown gag has a blue eye.”时,程序显示的回文数仅为 1,但实际上,该句子有 2 个回文:gag 和 eye。问题是“眼睛”这个词有句号。那么,当用户输入“我喜欢中午、晚上和午夜”时,程序怎么能忽略句号和逗号等其他标点符号呢? Noon 是一个回文,但由于有逗号,程序无法识别它。

另一个问题是大写。当用户输入“女士,我的工作完成了”时,我希望这个程序能够运行(并忽略 ASCII 等效项)。我知道这与降低有关。

总而言之,我希望这个程序有一个功能,它 a) 忽略标点符号 和 b) 大写

哦,“stringstream processtokens(sentence);...”的替代方案是什么?相反,我需要这个程序来使用 substring (substr) 和 find

兄弟们,请指导我!谢谢您,非常感谢您提供任何帮助。再次感谢,祝您有愉快的一天!

最佳答案

您可以使用 ispunct并忽略 ispunct 返回 true 的任何字符。您还应该将字符比较包装在调用中 tolower ()

关于c++ - 计算一个句子中的回文数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8998373/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com