LeetCode 笔试题 Valid Palindrome(验证是否是回文串)

问题描述

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

**说明:**本题中,我们将空字符串定义为有效的回文串。

示例 1:

输入: "A man, a plan, a canal: Panama"
输出: true

示例 2:

输入: "race a car"
输出: false

代码

/*
先将str内的非字母删掉,然后将大写转化为小写

从尾到头将元素push进str2中

、比较两者大小
*/
bool ValidPalindrome(string &str)
{
	auto it = str.begin();
	while(it!=str.end())
	{
		if (!isalpha(*it))
		{
			it = str.erase(it);
		}
		else
		{
			if (*it >= 'A' && *it <= 'Z')
			{
				*it += 32;
			}
			it++;
		}
	}
	string str2;
	for (auto it1 = str.rbegin(); it1 != str.rend(); ++it1)
	{
		str2.push_back(*it1);
	}

	return str == str2;
}
int main()
{
	string str = "A man, a plan, a canal: Panama";
	if (ValidPalindrome(str))
	{
		cout << "true" << endl;
	}
	else
	{
		cout << "false" << endl;
	}
	getchar();
	return 0;

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章