给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。

字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。


 

 

 

 1 class Solution {
 2 public:
 3     bool validPalindrome(string s) {
 4         int len = s.size();
 5         int low = 0,high = len-1;
 6         while(low<high){
 7             if(s[low]!=s[high]){
 8                 //移除左侧             
 9                 int L=low+1,H=high;
10                 while(L<=H){
11                     if(s[L]!=s[H]) break;
12                     L++;H--;
13                     if(L>=H) return true;
14                 }
15 
16                 //移除右侧
17                 L=low,H=high-1;
18                 while(L<=H){
19                     if(s[L]!=s[H]) break;
20                     L++;H--;
21                     if(L>=H) return true;
22 
23                 }
24                 
25                 return false;
26             }
27                 
28             else{
29                 low++;high--;
30             }
31         }        
32         return true;
33      
34         
35     }
36 };

 

posted on 2019-01-19 16:44  柠檬檬檬  阅读(182)  评论(0编辑  收藏  举报