首页 > 试题广场 >

字符串操作

[编程题]字符串操作
  • 热度指数:8918 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}给定长度为 n 的只含小写字母的字符串 s,以及正整数 m 次操作。
\hspace{15pt}每次操作给定两个整数 \ell,r 和两个小写字母 c_1,c_2;将字符串 s 在区间 [\ell,r] 内的所有字符 c_1 替换为 c_2
\hspace{15pt}按顺序执行完所有操作后,输出最终的字符串。

输入描述:
\hspace{15pt}在一行输入两个整数 n,m \left(1 \leqq n,m \leqq 100\right)
\hspace{15pt}接下来一行输入一个只含小写字母的字符串 s,长度为 n
\hspace{15pt}再接下来 m 行,每行输入两个整数 \ell,r 和两个字符 c_1,c_2,用空格分隔,其中 1 \leqq \ell \leqq r \leqq nc_1,c_2 为小写字母。


输出描述:
\hspace{15pt}输出一个只含小写字母的字符串,表示执行完所有操作后的最终字符串。
示例1

输入

5 3
wxhak
3 3 h x
1 5 x a
1 3 w g

输出

gaaak

说明

\hspace{8pt}\bullet\,初始字符串为 `wxhak`; 
\hspace{8pt}\bullet\,第 1 次操作将位置 3 上的 `h` 替换为 `x`,得到 `wxxak`;
\hspace{8pt}\bullet\,第 2 次操作将位置 1 至 5 的 `x` 替换为 `a`,得到 `waaak`;
\hspace{8pt}\bullet\,第 3 次操作将位置 1 至 3 的 `w` 替换为 `g`,得到 `gaaak`。

备注:

package main

import (
    "fmt"
)

func main() {
    var n,m int
    fmt.Scan(&n,&m)
    bytes := make([]byte, n)
    for i:=0;i<n;i++{
        fmt.Scanf("%c", &bytes[i])
    }
    // 读掉字符串的 \n
    fmt.Scanf("\n")
    for i:=0;i<m;i++{
        var l,r int
        var c1,c2 byte
        fmt.Scanf("%d %d %c %c\n",&l,&r,&c1,&c2)
        for i:=l-1;i<=r-1;i++{
            if bytes[i] == c1 {
                bytes[i] = c2
            }
        }
    }
    for i:=0;i<n;i++{
        fmt.Printf("%c", bytes[i])
    }
}
发表于 2023-12-22 15:55:14 回复(0)