【赛码】(基本算法-难度2)回文串【Python】
题目描述
给定一个字符串,问是否能够通过添加一个字母将其变成“回文串”。 “回文串”是指正着和反着读都一样的字符串。如:”aa”,”bob”,”testset”是回文串,”alice”,”time”都不是回文串。
输入描述
一行一个有小写字母构成的字符串,字符串长度不超过10。
输出描述
如果输入字符串可以通过添加一个字符,则输出”YES”,否则输出”NO”。
输入样例
coco
输出样例
Yes
判断字符串是否为回文串(一)
# 回文串
# 判断字符串是否为回文字符串
# 依次判断头尾字符是否相同
s = input()
length = len(s)
left = 0
right = length-1
while left<=right:
if s[left]==s[right]:
left += 1
right -= 1
else:
break
if left>right:
print('Yes')
else:
print('No')
判断字符串是否为回文串(二)
# 使用函数(字符串翻转后比较)
def reverse(str):
return str[::-1]
def palindrome(str):
return str == reverse(str)
s = input()
if palindrome(s):
print('Yes')
else:
print('No')
能否通过添加一个字符使之成为回文串
查了查别人的思路,是通过判断删除一个字符串之后是否是回文串,来判断能否通过添加一个字符使之成为回文串
遍历删除,让后判断,遇True返回,否则返回False
s = input()
def reverse(str):
return str[::-1]
def palindrome(str):
return str == reverse(str)
def ispalindrome(str):
for i in range(len(str)):
# print(str[i+1])
# if i<len(str):
s2 = str[0:i]+str[i+1:]
# else:
# s2 = str[0:-1]
print(s2)
if palindrome(s2):
return True
return False
if ispalindrome(s):
print('YES')
else:
print('No')
关于字符串列表的相互转换
# 字符串转为列表:
# 单字符列表:
s = 'abcde'
l = list(s)
# 指定字符分割
s = 'hello world'
l = s.split(' ')
# 列表转字符串
s = ' '.join(l)
切片取值超出索引范围时不报错,返回空值
# 输出为空
s = 'vgdfjghfjg'
print (s[len(s):])