#P1335. 2024.11.6-秋招(留学生)-第2题-解密字符串

2024.11.6-秋招(留学生)-第2题-解密字符串

题目内容

给定一个加密字符串SS,你需要按照以下规则对其解密并输出。解密规则:

11.若当前字符为字母AZA-Zaza-z,无需解密,原样输出。

22.若当前字符为'(',则其后会跟两个正整数xyx、y和一个字符')’,正整数xxyy之间以逗号为分隔符,你需从当前解密串倒数第xx个字符开始复制yy个字符作为解密后的信息输出。

需要考虑yy大于“剩余可复制字符数"的情况,此时复制需要多次完成先复制全部剩余字符输出,此时解密串的长度已变长,继续11次或者多次复制,直到复制完yy个字符。参考样例11和样例22

约束:

  1. 0<s.length<=10000< s.length <=1000,解密后的字符串长度<=2000<=2000
  2. 0<x<=990 < x <= 99, 0<y<=990 < y <= 99,且输入保证xx不会越界,即xx小于当前解密串的长度。
  3. 输入的字符串中只包含大小写字母和(x,yx,y)格式子串

输入描述

输入共一行,代表加密字符串,包含大小写字母和(x,yx,y)格式子串

输出描述

输出共一行,表示解密后的字符串,只包含大小写字母

样例1

输入

ABCDE(3,2)(2,3)		

输出

ABCDECDCDC

说明

ABCDE ABCDE不需要解密,原样输出。

(3,23,2)解密,向后退3个字符,

ABCDE
  |

复制22个字符,得到ABCDECDABCDECD,(3,23,2)解密结束;

(2,32,3)解密,向后退22个字符,

ABCDECD
     |

只有22个字符,先复制22个字符CDCD,得到ABCDECDCDABCDECDCD,

ABCDECDCD
       |

继续复制1个字符CC,得到ABCDECDCDCABCDECDCDC。(2,32,3)解密完毕。

样例2

输入

ABCD(3,8)(10,10)mn

输出

ABCDBCDBCDBCCDBCDBCDBCmn

说明

ABCD ABCD不需要解密,原样输出,

(3,83,8)解密,向后退33个字符,到字符BB的位置

ABCD
 |

先复制33个字符得到ABCDBCDABCDBCD,还剩下5个字符待复制

ABCDBCD
    |   

再复制33个字符得到ABCDBCDBCDABCDBCDBCD,还剩下22个字符复制

ABCDBCDBCD
       |

再复制22个字符得到ABCDBCDBCDBCABCDBCDBCDBC,还剩下00个字符待复制,(3,83,8)解密结束

(10,1010,10)解密,向后退1010个字符

ABCDBCDBCDBC
  |

复制10个字符得到ABCDBCDBCDBCCDBCDBCDBCABCDBCDBCDBCCDBCDBCDBC,(10,1010,10)解密结束

mnmn不需要解密,原样输出,解密结束,结果为:ABCDBCDBCDBCCDBCDBCDBCmnABCDBCDBCDBCCDBCDBCDBCmn