到目前为止,我的程序提示用户输入一个字符串,然后从开始到结束和向后阅读并比较两个结果。显然,如果他们是平等的,那么它就是一个回文,如果不是 - 它就不是了。
#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
string input;
cout << "Enter a string: ";
cin >> input;
if (input == string(input.rbegin(), input.rend())) {
cout << "Yes";
} else {
cout << "No";
}
return 0;
}
问题是,如何省略空格,标点符号等内容,以便我可以使用句子并检查它们是否是回文?
答案 0 :(得分:4)
首先处理输入:
#include <algorithm>
#include <boost/algorithm/string/case_conv.hpp>
#include <cctype>
input.erase(
std::remove_if(input.begin(), input.end(),
[] (char c) { return std::isspace(c) || std::ispunct(c); }),
input.end()
);
boost::algorithm::to_lower(input);