classSolution:defvalidPalindrome(self, s:str)->bool:defisPalindrome(left,right):while left<right:if s[left]!=s[right]:returnFalse
left +=1
right -=1returnTrue
left, right =0,len(s)-1while left < right:if s[left]==s[right]:
left +=1
right -=1else:return isPalindrome(left+1, right)or isPalindrome(left, right-1)returnTrue
C++
classSolution{public:boolisPalindrome(const string& s,int left,int right){while(left<right){if(s[left]==s[right]){left++; right--;}elsereturnfalse;}returntrue;}boolvalidPalindrome(string s){int left =0, right = s.size()-1;while(left < right){if(s[left]==s[right]){left++; right--;}elsereturnisPalindrome(s, left+1, right)||isPalindrome(s, left, right-1);}returntrue;}};
C#
publicclassSolution{publicboolisPalindrome(char[] s,int left,int right){while(left<right){if(s[left]==s[right]){left++; right--;}elsereturnfalse;}returntrue;}publicboolValidPalindrome(string s){char[] ss = s.ToCharArray();int left =0, right = ss.Length-1;while(left < right){if(s[left]==s[right]){left++; right--;}elsereturnisPalindrome(ss, left+1, right)||isPalindrome(ss, left, right-1);}returntrue;}}
Java
classSolution{publicbooleanisPalindrome(String s,int left,int right){while(left<right){if(s.charAt(left)==s.charAt(right)){left++; right--;}elsereturnfalse;}returntrue;}publicbooleanvalidPalindrome(String s){int left =0, right = s.length()-1;while(left < right){if(s.charAt(left)==s.charAt(right)){left++; right--;}elsereturnisPalindrome(s, left+1, right)||isPalindrome(s, left, right-1);}returntrue;}}