联想笔试---复制粘贴 题解 (模拟题)

题目:

复制粘贴
时间限制: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)

全部评论

相关推荐

点赞 评论 收藏
分享
头像
11-09 17:30
门头沟学院 Java
TYUT太摆金星:我也是,好几个华为的社招找我了
点赞 评论 收藏
分享
2 9 评论
分享
牛客网
牛客企业服务