给你一个字符串 s
,最多 可以从中删除一个字符。
请你判断 s
是否能成为回文字符串:如果能,返回 true
;否则,返回 false
。

思路:
暴力破解。
python3实现:
class Solution:
def validPalindrome(self, s: str) -> bool:
# 如果反转不变,返回True;否则删除一个字符,在判断
s_reverse = s[::-1]
if s == s_reverse:
return True
else:
# 哈希表,最多只能有一个奇数
s_dic = collections.Counter(s)
ji_list = []
count = 0
for key in s_dic:
if count > 2:
return False
if s_dic[key] % 2 != 0:
ji_list.append(key)
count += 1
if count == 0:
new_s = s + s + s
if new_s[1:] == new_s[1:][::-1]:
return True
p = 0
print("ji_list:", ji_list)
while p <= len(s) - 1:
if s[p] in ji_list:
new_s = s[0:p] + s[p+1:]
new_reverse_s = new_s[::-1]
# print("new_s:",new_s)
# print("new_reverse_s:",new_reverse_s)
if new_s == new_reverse_s:
return True
p += 1
return False
