【算法】字符串回文

题目:

输入一个字符串, 忽视字符大小写, 删掉非数字或字母字符, 判断该字符串是不是回文

若是回文则输出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;
}

猜你喜欢

转载自blog.csdn.net/phoenixFlyzzz/article/details/130441070