【賽碼】(基本算法-難度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):])