poj_3617 解题

题意:

给定长度为N的字符串S,要构造一个长度为N的字符串T串。
从S的头部删除一个字符,加到T的尾部
从S的尾部删除一个字符,加到T的尾部
目标是构造字典序尽可能小的字符串。

示例输入:

ACDBCB

示例输出:

ABCBCD
s1 = 'ACDBCB'

def rev(string:str) -> str:
    """:return 返回翻转的string"""
    ret = ''
    for i in string[::-1]:
        ret += i
    return ret


def f(string1:str, string2:str) -> str:
    """
    :param string1: 原str
    :param string2: 原str的翻转
    :return:
    """
    res = ''
    length = len(string1)
    p1 = 0
    p2 = 0
    while len(res) < length:
        if ord(string1[p1]) < ord(string2[p2]):
            res += string1[:p1+1]
            string1 = string1[p1+1:]
            p1 = 0
            p2 = 0
            continue
        if ord(string1[p1]) > ord(string2[p2]):
            res += string2[:p2+1]
            string2 = string2[p2+1:]
            p2 = 0
            p1 = 0
            continue

        if ord(string1[p1]) == ord(string2[p2]):
            p1 += 1
            p2 += 1

    return res[:length]


print(f(s1, rev(s1)))

posted @ 2021-03-10 16:02  EdenWu  阅读(77)  评论(0编辑  收藏  举报