小易爱回文——Python——网易2021校招笔试-测试工程师

2024-01-03 16:24:02

大家新年快乐,今天刷到一个经典的笔试编程题,我用Python来解答,并提供思路,先看一下烟花

22.小易爱回文

小易得到了一个仅包含大小写英文字符的字符串,该字符串可能不是回文串。(“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串,“asds”就不是回文串。)

小易可以在字符串尾部加入任意数量的任意字符,使其字符串变成回文串。

现在请你编写一个程序,程序要能计算出小易可以得到的最短回文串。

时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 256M,其他语言512M

输入描述:

一行包括一个字符串。

输出描述:

一行包括一个字符串,代表答案。

示例1

输入例子:

noon

输出例子:

noon

示例2

输入例子:

noo

输出例子:

noon

示例3

输入例子:

helloworld

输出例子:

helloworldlrowolleh

首先看到题,都能想到用字符串翻转拼接,线性复杂度就能解答

注意:应该从总长度最小开始,遇到符合条件直接break,这么说有点抽象,直接看代码

s=input()
r=s[::-1]    #字符串反转
for i in range(len(s)):    
    if s[i::]==r[:len(s)-i]:    #当出现重合字段,直接输入结果
        print(s+r[len(s)-i:])
        break
#比如示例2
#第一次比较i=0, s[i::]='noo', r[:len(s)-i]='oon', 不相等,i++
#i=1, s[i::]='oo', r[:len(s)-i]='oo', 相等打印
#原字符串s='noo' + 不重合部分r[len(s)-i:]='n'

因为是从重叠部分大到小进行比较,所以第一次出现就是重叠部分最大(结果长度最小)的情况

现在这到题就解答好了,博主表述的是否清楚?如有不懂欢迎留言

新年新气象,希望今年的我们都能获得自己的成长,2024 happy new year~

文章来源:https://blog.csdn.net/weixin_53415043/article/details/135323231
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。