验证回文字符串html
给定一个字符串,验证它是不是回文串,只考虑字母和数字字符,能够忽略字母的大小写。java
说明:本题中,咱们将空字符串定义为有效的回文串。数组
示例 1:指针
输入: "A man, a plan, a canal: Panama" 输出: true
示例 2:code
输入: "race a car" 输出: false
题解:使用两个指针,分别指向头和尾,从头找到一个是数字或是字母的字符,而后从尾开始找,也是找到一个是数字或是字母的字符,而后判断,不一样的话返回false,结果想到太多,错了不少次,仍是太菜了。htm
public class Main { public static void main(String[] args) { System.out.println(isPalindrome("0P")); System.out.println(isPalindrome(".,")); System.out.println(isPalindrome("A man, a plan, a canal: Panama")); } public static boolean isPalindrome(String s) { char[] c =s.toLowerCase().toCharArray();//都转成小写,转成字符数组 int j=c.length-1; int i=0; while(i<j){ while(i<j && !((c[i]>='0' && c[i]<='9')||(c[i]>='a' && c[i]<='z'))){ //找到一个数字或字母字符 i++; } while(i<j && !( (c[j]>='0' && c[j]<='9') || (c[j]>='a' && c[j]<='z') )){ j--; } if(i<c.length && j>=0 && c[i]==c[j]){ //这步不用再去想c[i]是否是数字或字母了,只要相等就i++,j--, i++; j--; }else {//不相等就返回 return false; } } return true; } }