首页 > 试题广场 >

字符串操作

[编程题]字符串操作
  • 热度指数:8684 时间限制: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`。

备注:

// 引入Node.js的readline模块
const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});
// 处理输入和执行操作的函数
function processInputAndOperations(inputLines) {
  const [n, m] = inputLines[0].split(' ').map(Number);
  let s = inputLines[1];
  for (let i = 2; i < 2 + m; i++) {
    const [l, r, c1, c2] = inputLines[i].split(' ');
    const substr = s.substring(l - 1, r);
    s = s.split(substr).join(substr.split(c1).join(c2));
  }
  return s;
}
// 读取输入数据
const inputLines = [];
rl.on('line', (line) => {
  inputLines.push(line);
  if (inputLines.length === 2 + Number(inputLines[0].split(' ')[1])) {
    rl.close();
    // 处理输入数据并执行操作
    const result = processInputAndOperations(inputLines);
    console.log(result);
  }
});
发表于 2023-09-16 21:40:41 回复(0)