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

京公网安备 11010502036488号