题目
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: “A man, a plan, a canal: Panama”
输出: true
示例 2:
输入: “race a car”
输出: false
难点
这道题的难点就在于大小写字母不分,字母与数字组合,所以判断是否是数字或者字母是必不可少的条件,我的想法是用Linq将符合条件的字母和数字抽取出来,然后比较是否回文
代码
public bool IsPalindrome(string s) {
if(s=="") return true;
char []c= s.ToLower().Where(rd=>(rd>='A'&& rd<='Z')||(rd>='0'&& rd<='9')|| (rd >= 'a' && rd <= 'z')).Select(rd=>rd).ToArray();
int left=0,right=c.Length-1;
while(left<=right)
{
if(c[left]!=c[right])
{
return false;
}
left++;
right--;
}
return true;
}