题目:
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
For example,
"A man, a plan, a canal: Panama"
is a palindrome.
"race a car"
is not a palindrome.
Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.
For the purpose of this problem, we define empty string as valid palindrome.
题意:
给定一个字符串,判定它是否是回文串,只考虑数字和字母字符,忽略其他字符。
比如,
"A man, a plan, a canal: Panama" 是一个回文串。
"race a car"不是回文串。
注意:
你想到了字符串可能为空的情况了么?面试的时候可能会问到哦
在本题中,我们定义空字符为回文串。
算法分析:
首先将给定的字符串中数字和字母重新加入新的数组中,忽略其他的字符,之后统一大小写。重新按照回文串的规则判断新的字符串数组。
思路比较简单,直接上代码了。
AC代码:
<span style="font-family:Microsoft YaHei;font-size:12px;">public class Solution
{
public boolean isPalindrome(String s)
{
boolean flag=true;
int i;
ArrayList<Character> list=new ArrayList<Character>();
s=s.toUpperCase();//所有的小写字符统一变换为大写字符
if(s==null||s.length()==0) return true;
for(i=0;i<s.length();i++)
{
if((s.charAt(i)>='A'&&s.charAt(i)<='Z')||(s.charAt(i)>='0'&&s.charAt(i)<='9'))
{
list.add(s.charAt(i));
}
}
for(i=0;i<list.size();i++)
{
if(list.get(i)==list.get(list.size()-i-1))
flag=true;
else
{
flag=false;
break;
}
}
return flag;
}
}</span>