题意
给出一个长度为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) }