【賽碼】(基本算法-難度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):])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章