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;

}

 

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