力扣原题:
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
原题力扣链接:力扣
解题主要思路:
进行2次循环。第一次循环的目的在于找出字符数字、大小写字母,并将其以整数的形式存入一个整型数组;第二次循环的目的在于通过整型数组中数字大小的比较来间接验证回文串。
public class Solution {
public bool IsPalindrome(string s) {
int len = s.Length;
int[] arr = new int[len]; //开辟一个int类型的数组
int all=0; //记录总的需要进行比较判断的字符的个数
int index;
for(int i=0;i<len;i++){
int value = (int)s[i];
// 判断是否是数字字符、大小写字母
if(value>=65&&value<=90 || value>=97&&value<=122 || value>=48&&value<=57)
{
// 如果是大写字母,则依据ASCII表加32变为小写字母,以方便后续比较
if(value>=65&&value<=90) value+=32;
arr[all++]=value; // 用整数值来存入数组替代字符
}
}
index = all;
for(int i=0;i<all/2;i++){
if(arr[i]!=arr[index-1]) return false;
index--;
}
return true;
}
}