Xiang Li-哈尔滨理工大学

试题 算法提高 字符串的操作

资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
  给出一个字符串S,然后给出q条指令,分别有4种:

1. Append str
  表示在S的最后追加一个字符串str。
  例:
  原字符串:ABCDE
  执行 Append FGHIJ 后
  字符串变为:ABCDEFGHIJ

2. Insert x str
  表示在位置x处插入一个字符串str。(输入保证0   例:
  原字符串:ABCGHIJ
  执行 Insert 4 DEF 后
  字符串变为:ABCDEFGHIJ

3. Swap a b c d
  表示交换从第a位到第b位的字符串与从第c位到第d位的字符串。(输入保证0   例:
  原字符串:ABGHIFCDEJ
  执行 Swap 3 5 7 9后
  字符串变为:ABCDEFGHIJ

4. Reverse a b
  表示将从第a位到第b位的字符串反转。(输入保证0   例:
  原字符串:ABGFEDCHIJ
  执行 Reverse 3 7 后
  字符串变为:ABCDEFGHIJ

最后输出按顺序执行完指令后的字符串。
输入格式
  输入第一行包含字符串S,第二行包含一个整数q,接下来q行分别为q个指令。
输出格式
  输出为1行,为按顺序执行完输入指令后的字符串。
样例输入
My
5
Append Hello
Insert 3 dlroW
Reverse 3 7
Swap 3 7 8 12
Swap 1 2 3 7
样例输出
HelloMyWorld
样例说明
  原字符串:My
  执行 Append Hello 后:MyHello
  执行 Insert 3 dlroW 后:MydlroWHello
  执行 Reverse 3 7 后:MyWorldHello
  执行 Swap 3 7 8 12 后:MyHelloWorld
  执行 Swap 1 2 3 7 后:HelloMyWorld
数据规模和约定
  对于30%的数据,q=1;

对于70%的数据,如有Swap指令,Swap指令中b-a=d-c;

对于100%的数据,最终字符串长度不大于40000,1<=q<=150

import math
import cmath
import string
import sys
from queue import Queue,LifoQueue,PriorityQueue
from itertools import permutations
from collections import deque

if __name__=="__main__":
    str1=input()
    n=int(input())
    while n:
        n-=1
        list1=input().strip().split(" ")
        if list1[0]=='Append':
            str1=str1+list1[1]
        elif list1[0]=='Insert':
            str1=list(str1)
            str1.insert(int(list1[1])-1,list1[2])
            str1=''.join(str1)
        elif list1[0]=='Reverse':
            a=int(list1[1])
            b=int(list1[2])
            temp=str1[b-1:a-2:-1]
            str1=str1.replace(str1[a-1:b],temp)
        elif list1[0]=='Swap':
            a1=int(list1[1])
            b1=int(list1[2])
            a2=int(list1[3])
            b2=int(list1[4])
            temp1=str1[a1-1:b1]
            temp2=str1[a2-1:b2]
            
            if b1-a1==b2-a2:
                str1=list(str1)
                str1[a1-1:b1],str1[a2-1:b2]=str1[a2-1:b2],str1[a1-1:b1]
                str1=''.join(str1)
            else:
                str1=str1.replace(temp2,temp1)
                str1=str1.replace(temp1,temp2,1)
                
            
    print(str1)


Xiang Li-哈尔滨理工大学_第1张图片

你可能感兴趣的:(算法)