题意

给出一个长度为n的字符串和q次询问,每次询问把区间[l,r]的字母各重复一次,插入到原字母的后面。

思路

模拟即可,每次循环都把s字符串遍历一遍,假设字符串tmp为新的字符串,先将当前字符加到tmp里,如果说当前下标在区间[l-1,r-1]里,就重复加一次。

[l-1,r-1]的原因是数组的下标从0开始

Go代码

package main

import (
    "fmt"
)

func main() {
    var n,q,l,r int 
    fmt.Scan(&n,&q)
    var s string
    fmt.Scan(&s)
    for i := 1; i <= q; i ++ {
        fmt.Scan(&l,&r)
        var tmp []byte 
        for j := 0; j < len(s); j ++ {
            tmp = append(tmp,s[j])
            if j >= l - 1 && j <= r - 1 {
                //重复
                tmp = append(tmp,s[j])
            }
        }
        s = string(tmp) 
    }
    fmt.Print(s)
}