联想笔试---复制粘贴 题解 (模拟题)
题目:
复制粘贴 时间限制:3000MS 内存限制:589824KB 题目描述 输入一个长度为n的仅包含英文字母的字符串,下标从1开始。你对这个字符串进行如下操作Q次,第i次操作如下: .li,ri,k,表示复制原串中下标为li,li+1,...,ri的字符串,之后:如果k=0,则将其粘贴在字符串的前面;如果k=1,则将其粘贴在字符串的末尾。 你需要输出经过Q次操作后得到的字符串。 输入描述 第一行两个正整数n,Q(1<=n,Q<=2*10^4) 第二行一个长度为n的仅包含英文字母的字符串。 第三行包含Q个正整数l1,l2,...lQ; 第四行包含Q个正整数:r1,r2,...rQ; 第五行包含Q个正整数:k1,k2,...kQ; 数据保证;1<=li<=ri<=n,0<=ri-li<10,ki∈(0,1),且输入的区间范围合法。 输出描述 输出一行,表示最后得到的字符串。 样例输入 7 2 XabcdeZ 2 1 4 7 0 1 样例输出 abcXabcdeZXbcdeZ 提示 第一次操作为l1=2,r1=4,k1=0,复制的子串为abc,将其粘贴在字符串开头,此时字符串为abcXabcdeZ. 第二次操作为l2=1,r2=7,k2=1,复制的子串为XabcdeZ,即整个原串,将其粘贴在字符串末尾,此时字符串为abcXa
代码:
#复制粘贴 while(1): line = input().strip() if len(line)<=0:break line = line.split(' ') n,Q = int(line[0]),int(line[1]) s = input().strip() line2 = input().strip() lefts = [int(x) for x in line2.split(' ')] line3 = input().strip() rights = [int(x) for x in line3.split(' ')] line4 = input().strip() kQ = [int(x) for x in line4.split(' ')] res = s for i in range(len(lefts)): if kQ[i]==0:res = s[lefts[i]-1:rights[i]]+res else:res+=s[lefts[i]-1:rights[i]] print(res)