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