164.Valid Palindrome II
阿新 • • 發佈:2018-09-13
ole ring emp charat let 比較 NPU note 刪除
題目:
Given a non-empty string s
, you may delete at most one character. Judge whether you can make it a palindrome.
給定非空字符串s,您最多可以刪除一個字符。 判斷你是否可以成為回文。
Example 1:
Input: "aba" Output: True
Example 2:
Input: "abca" Output: True Explanation: You could delete the character ‘c‘.
Note:
- The string will only contain lowercase characters a-z. The maximum length of the string is 50000.該字符串僅包含小寫字符a-z。 字符串的最大長度為50000。
解答:
1 class Solution { 2 public boolean validPalindrome(String s) { 3 int left=0,right=s.length()-1; 4 while(left<right){ 5 if(s.charAt(left)!=s.charAt(right)) 6 return isValid(s,left+1,right) || isValid(s,left,right-1); 7 left++;right--;8 } 9 return true; 10 } 11 12 public boolean isValid(String s,int left,int right){ 13 while(left<right){ 14 if(s.charAt(left)!=s.charAt(right)) 15 return false; 16 left++;right--; 17 } 18 return true; 19} 20 }
詳解:
字符串判斷回文,設置left,right指針從頭和從尾比較即可。
不匹配時刪除左邊的字符還是右邊的字符才能匹配,所以左右兩邊都要試一下
164.Valid Palindrome II