1. 程式人生 > >164.Valid Palindrome II

164.Valid Palindrome II

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:

  1. 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