P=list(map(int,input().split())) #P[0] P[1] P[2]分别对应P1 P2 P3
S=input() #输入字符串
s=list(S) #转化为列表
for i in range(1,len(s)-1): #字符串的头尾不用进入循环
   if s[i]=='-': #找到’-‘进行编辑
       if ord('z')>=ord(s[i+1])>ord(s[i-1])>=ord('a'): #判断是否为字母
           if P[0]!=3: #填充字母
               if P[2]==1: #顺序
                   number=ord(s[i+1])-ord(s[i-1])-1
                   X=""
                   if P[0]==1:#小写
                       for j in range(number):
                           for k in range(P[1]):
                               X=X+chr(ord(s[i-1])+j+1)
                   else:#大写
                       for j in range(number):
                           for k in range(P[1]):
                               X=X+chr(ord(s[i-1])+j+1-32) #小写字母的ascll码减去32为大写的
                   s[i]=X
               else:#倒序
                   number = ord(s[i + 1]) - ord(s[i - 1]) - 1
                   X = ""
                   if P[0] == 1:  # 小写
                       for j in range(number):
                           for k in range(P[1]):
                               X = X + chr(ord(s[i + 1]) - j - 1)#从比s[i+1]的ascll码小一的字符开始加入字符串X j用于逐个减直至找到s[i-1]
                   else:  # 大写
                       for j in range(number):
                           for k in range(P[1]):
                               X = X + chr(ord(s[i + 1]) - j - 1 - 32)
                   s[i] = X
           else: #填充*
               number = ord(s[i + 1]) - ord(s[i - 1]) - 1
               x=""
               for j in range(number):
                   for k in range(P[1]):
                       x=x+"*"
               s[i]=x
       elif ord('9')>=ord(s[i+1])>ord(s[i-1])>=ord('0'): #判断是否为数字
           if P[0]!=3: #填充数字
               # print(3)
               if P[2]==1: #顺序
                   number=ord(s[i+1])-ord(s[i-1])-1
                   X=""
                   for j in range(number):
                       for k in range(P[1]):
                           X=X+chr(ord(s[i-1])+j+1)
                   s[i]=X
               else: #倒序
                   number = ord(s[i + 1]) - ord(s[i - 1]) - 1
                   X = ""
                   for j in range(number):
                       for k in range(P[1]):
                           X = X + chr(ord(s[i + 1]) - j - 1) #从比s[i+1]的ascll码小一的字符开始加入字符串X j用于逐个减直至找到s[i-1]
                   s[i] = X
           else: #填充*
               number = ord(s[i + 1]) - ord(s[i - 1]) - 1
               x=""
               for j in range(number):
                   for k in range(P[1]):
                       x=x+"*"
               s[i]=x
       elif ord(s[i+1])==(ord(s[i-1])+1): #若前后字符的ascll码差值为1 则去掉‘-’
           s[i]=""
       else: #若ascll码值 s[i-1]>s[i+1] 则开始下一轮循环 不做处理
           continue;
for i in range(len(s)): #输出
   print(s[i],end="")


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论