题解 | 魔导数据包的混合进制编码

魔导数据包的混合进制编码

https://www.nowcoder.com/practice/7bf7b552c757402fb2ff16a10ed0bb00

import sys

# 换为字符,然后求最长回文串
n = int(input())
b = list(map(int, input().split()))

s = "b" if n < 0 else "a"
n = abs(n)

for x in b:
    d = n % x
    n = n // x
    s += chr(d + ord('a'))

# 找最长回文子串;字典序最小
if s == s[::-1]:
    print(s+"(palindrome)")
else:
    # 奇偶, 字典序最小
    n = len(s)
    resl = 1 
    resr = 0
    for i in range(n):
        l, r = i-1, i+1
        while l >= 0 and r < n and s[l] == s[r]:
            l -= 1
            r += 1
        l += 1
        r -= 1
        if r - l > resr - resl:
            resr, resl = r, l
        elif r - l == resr - resl and s[resl:resr+1] > s[l:r+1]:
            resr, resl = r, l
    
    for i in range(n):
        l, r = i, i+1
        while l >= 0 and r < n and s[l] == s[r]:
            l -= 1
            r += 1
        l += 1
        r -= 1

        if r - l > resr - resl:
            resr, resl = r, l
        elif r - l == resr - resl and s[resl:resr+1] > s[l:r+1]:
            resr, resl = r, l

    # print(resl, resr)
    print(s[resl:resr+1])
        

全部评论

相关推荐

04-03 15:12
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务