680.回文字符串
题目描述:
给定一个非空字符串s,最多删除一个字符。判断是否能成为回文字符串。
示例:
输入:‘aba’
输出:True
输入:‘abca’
输出:True 删掉字符c
solution: 分为奇数和偶数讨论,奇数的时候,只需要判断中间位数的两变元素是否对应相等。偶数情况下,转化为列表,循环删除每一位,然后判断是否是回文字符
class Solution(object):
def validPalindrome(self,s):
if len(s) %2 ==0:
num = (len(s)-1)/2
j=0
for i in range(len(s)):
B = list(s)
B.remove(B[i])
if B[0:num] ==B[num+1:][::-1]:
return True
elif B[0:num] !=B[num+1:][::-1]:
j = j+1
if j==len(B):
return False
else:
num = (len(s)-1)/2
B = list(s)
if B[0:num] == B[num + 1:][::-1]:
return True
elif B[0:num] != B[num + 1:][::-1]:
return False
s = 'abaa'
solution = Solution()
print solution.validPalindrome(s)
859.亲密字符串
题目描述:
给定两个由小写字母构成的字符串A和B,只要我们可以通过交换A中的两个字母得到与B相等的结果,就返回true,否则返回false
示例:
输入:A=‘ab’,B=‘ba’
输出:true
输入:A= ’aa‘,B=‘aa’
输出:true
solution: 判断两个字符是否完全相等,是True,否False。判断A和B的长度是否相等,是True,否False。最后字符长度相等,判断不相等元素是否为2。如果为2,则在判断元素互换以后是否相等,是True,否False。
class Solution(object):
def buddyString(self,A,B):
if A==B:
return True
elif len(A)!=len(B):
return False
elif len(A)==len(B):
num = 0
label = []
A = list(A)
B = list(B)
for i in range(len(A)):
if A[i]!=B[i]:
num +=1
label.append(i)
if num ==2:
i = label[0]
if A[i]==B[i+1] and A[i+1]==B[i]:
return True
else:
return False
else:
return False
A = ''
B = 'ba'
solution = Solution()
print solution.buddyString(A,B)