問題描述
給定一個字符串,驗證它是否是迴文串,只考慮字母和數字字符,可以忽略字母的大小寫。
**說明:**本題中,我們將空字符串定義爲有效的迴文串。
示例 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;
}