Easy
5401519FavoriteShare
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
Note: For the purpose of this problem, we define empty string as valid palindrome.
Example 1:
Input: "A man, a plan, a canal: Panama" Output: true
Example 2:
Input: "race a car" Output: false
C++:
/*
* @Author: SourDumplings
* @Link: https://github.com/SourDumplings/
* @Email: changzheng300@foxmail.com
* @Description: https://leetcode.com/problems/valid-palindrome/
* @Date: 2019-03-20 18:31:23
*/
class Solution
{
public:
bool isPalindrome(string s)
{
int l = s.length();
string str;
str.resize(l);
int j = 0;
for (int i = 0; i < l; i++)
{
if (isalnum(s[i]))
{
str[j++] = tolower(s[i]);
}
}
for (int i = 0; i < j / 2; i++)
{
if (str[i] != str[j - i - 1])
{
return false;
}
}
return true;
}
};
Java:
/*
* @Author: SourDumplings
* @Link: https://github.com/SourDumplings/
* @Email: changzheng300@foxmail.com
* @Description: https://leetcode.com/problems/valid-palindrome/
* @Date: 2019-03-20 18:43:18
*/
class Solution
{
public boolean isPalindrome(String s)
{
StringBuffer str = new StringBuffer();
int l = s.length();
for (int i = 0; i < l; i++)
{
char c = s.charAt(i);
if (Character.isAlphabetic(c) || Character.isDigit(c))
{
str.append(Character.toLowerCase(c));
}
}
int ll = str.length();
for (int i = 0; i < ll / 2; ++i)
{
if (str.charAt(i) != str.charAt(ll - i - 1))
{
return false;
}
}
return true;
}
}