题目:
NOIP 2007 提高第二题
涉及到的一些字符串知识点:
字符串分割:split()
ascall码字符转换:ord() chr()
大小写转换:lower() upper()
倒序处理: 步长-1 : [::-1]
列表转化为字符串:"".join(list) 即列表各元素以""为间隔拼接
p1, p2, p3 = [int(x) for x in input().split()] # 输入str->int
string = input().split("-") # 以-为分隔符,分割,注意:"---" "-123"这种->"'','',''", "'','123'"
for i in range(len(string)-1) :
if string[i] == "" or string[i+1] == "": # 若该-左或右无字母或数字
filler = "-"
else:
a = string[i][-1] # 左边字符串最后一个字符 和 右边第一个
b = string[i+1][0]
if ord(a)+1 < ord(b) : # ascall是否符合
o1 = ord(a)
o2 = ord(b)
filler = ""
if (97<=o1<=122 and 97<=o2<=122) or (48<=o1<=57 and 48<=o2<=57): # 是否左右同时为小写字母或数字
if p1 == 1:
for j in range(o1+1, o2):
filler += chr(j).lower()*p2 # 字符串拼接、大小写转换
elif p1 == 2:
for j in range(o1+1, o2):
filler += chr(j).upper()*p2
elif p1 == 3:
filler += (o2-o1-1) * p2 * "*"
if p3 == 2:
filler = filler[::-1] # 步长为-1,即倒序
else:
filler = "-"
elif ord(a)+1 == ord(b):
filler = ""
else:
filler = "-"
string[i] += filler
ans = "".join(string) # 列表->字符串
print(ans)