leetcode-125-验证回文串
问题:
package com.example.demo; public class Test125 { /** * 验证是否是回文字符串 * 分析: * 定义两个索引,分别执行字符串的起始和结尾,两个索引同时向中间移动 * 在比较的时候,如果遇到非数字和字母的字符,在right--或left++(跳过当前字符) */ public boolean isPalindrome(String s) { if (s == null) { return false; } if (s.length() == 0) { return true; } // 忽略大小写 s = s.toLowerCase(); int left = 0; int right = s.length() - 1; while (left < right) { // 判断是否是数字或字母 while (left < right && !Character.isLetterOrDigit(s.charAt(left))) { left++; } while (left < right && !Character.isLetterOrDigit(s.charAt(right))) { right--; } if (s.charAt(left) != s.charAt(right)) { return false; } left++; right--; } return true; } public static void main(String[] args) { Test125 t = new Test125(); boolean asdffdsa = t.isPalindrome("A man, a plan, a canal: Panama"); System.out.println(asdffdsa); } }