题目:
输入一个字符串, 忽视字符大小写, 删掉非数字或字母字符, 判断该字符串是不是回文
若是回文则输出yes,否则输出no
示例输入:
A man, a plan, a canal: Panama
示例输出:
yes
算法:
用getline函数输入字符串,这样可以读取一行字符串,用isalnum函数判断字符是否是数字或者字母,用tolower将大写字母替换成小写字母,用反向迭代器构造一个逆置的新字符串,对比修改后的字符串和新的逆置字符串是否相等
源码:
#include <iostream>
#include <string>
using namespace std;
bool plalindrome(string& str)
{
string strGood;
for (auto& e : str)
{
if (isalnum(e))
{
strGood += tolower(e);
}
}
string strRev(strGood.rbegin(), strGood.rend());
return strRev == strGood;
}
int main()
{
string str;
getline(cin, str);
if (plalindrome(str))
{
cout << "yes" << endl;
}
else
{
cout << "no" << endl;
}
return 0;
}