题目
其实关于回文的题目很多,这里再给出一个简单的题目。我们把空字符串也当作回文字符串。
输入
A man, a plan, a canal: Panama
输出
YES
输入
race a car
输出
NO
分析
这个题目没有难度,只是要稍微注意下大小写,还有要忽略掉空格和标点符号。
代码
#include <iostream>
#include <string>
#include <cctype>
#include <algorithm>
using namespace std;
int main()
{
string str;
while (getline(cin, str))
{
for_each(str.begin(), str.end(), ::tolower);
auto left = str.begin(), right = prev(str.end());
while (left < right)
{
if (!isalnum(*left))
++left;
else if (!isalnum(*right))
--right;
else if (*left != *right)
{
cout << "NO" << endl;
return 0;
}
else
{
left++, right--;
}
}
cout << "YES" << endl;
}
return 0;
}