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)))