标签:ace span https else int lower 直接 就是 字符串
125题:https://leetcode-cn.com/problems/valid-palindrome/
这个题就是一个很标准的验证回文字符串,但是这个字符串又有点不一样,它有数字,有大写,有小写,甚至还有空格和非数字字符,根据题目意思,空格,非数字符号是不会被纳入评价范围的,同时判定的时候也不区分大小写。所以我们首先先把字符串统一转成大写或者是小写,然后去除空格。在双指针判断的时候遇到 小于‘0’ 或者 大于‘9’且小于‘a’ 或者大于‘z’的情况下要直接将这边+1,寻找下一个位置。代码如下
class Solution { public boolean isPalindrome(String s) { if(s.length() == 0){ return true; } s = s.toLowerCase(); s = s.replaceAll(" ",""); int left = 0; int right = s.length()-1; while(left < right){ if(s.charAt(left) < ‘0‘ || (s.charAt(left) > ‘9‘ && s.charAt(left) < ‘a‘) || s.charAt(left) > ‘z‘){ left++; continue; } if(s.charAt(right) < ‘0‘ || (s.charAt(right) > ‘9‘ && s.charAt(right) < ‘a‘) || s.charAt(right) > ‘z‘){ right--; continue; } if(s.charAt(left) != s.charAt(right)){ return false; } left++; right--; } return true; } }
class Solution { public boolean validPalindrome(String s) { int left = 0; int right = s.length()-1; while(left < right){ if(s.charAt(left) != s.charAt(right)){ return check(s,left+1,right) || check(s,left,right-1); }else{ left++; right--; } } return true; } private boolean check(String s,int l, int r){ int left = l; int right = r; while(left < right){ if(s.charAt(left) != s.charAt(right)){ return false; } left++; right--; } return true; } }
LeetCode 125. 验证回文串 && 680. 验证回文字符串 Ⅱ
标签:ace span https else int lower 直接 就是 字符串
原文地址:https://www.cnblogs.com/ZJPaang/p/12915372.html