解題思路: 簡單,因為只能削去一個字,所以當遇到第一個不符合回文字串的字時,有兩種處理方式, 削去目前的字(即表示從下一個位置開始處理),或削去比對的另一個字,將對方處理位置減一
,考慮這兩種處理方式,即為所求
c++ code:
class Solution { public: bool validPalindrome(string s) { int len=s.length()-1; int ch=len/2; int i; int ok=1; for(i=0;i<=ch;i++) { if(s[i]!=s[len-i]) break; } for(int j=i+1;j<=ch;j++) { if(s[j]!=s[len+1-j]) { ok=0; break; } } if(ok) return true; ok=1; for(int j=i;j<=ch;j++) { if(s[j]!=s[len-1-j]) { ok=0; break; } } if(ok) return true; return false; } };
沒有留言:
張貼留言