Pintia题解——7-11 敲笨钟

7-11 敲笨钟

原题:

微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。为了增加敲钟的趣味性,还会糟改几句古诗词。其糟改的方法为:去网上搜寻压“ong”韵的古诗词,把句尾的三个字换成“敲笨钟”。例如唐代诗人李贺有名句曰:“寻章摘句老雕虫,晓月当帘挂玉弓”,其中“虫”(chong)和“弓”(gong)都压了“ong”韵。于是这句诗就被糟改为“寻章摘句老雕虫,晓月当帘敲笨钟”。

现在给你一大堆古诗词句,要求你写个程序自动将压“ong”韵的句子糟改成“敲笨钟”。

输入格式:

输入首先在第一行给出一个不超过 20 的正整数 N。随后 N 行,每行用汉语拼音给出一句古诗词,分上下两半句,用逗号 , 分隔,句号 . 结尾。相邻两字的拼音之间用一个空格分隔。题目保证每个字的拼音不超过 6 个字符,每行字符的总长度不超过 100,并且下半句诗至少有 3 个字。

输出格式:

对每一行诗句,判断其是否压“ong”韵。即上下两句末尾的字都是“ong”结尾。如果是压此韵的,就按题面方法糟改之后输出,输出格式同输入;否则输出 Skipped,即跳过此句。

.

解题思路:

  1. 引入readline模块并创建接口对象:首先将readline模块引入,并使用createInterface方法创建一个接口对象rl。该对象设置了输入流为标准输入。
  2. 读取输入并存储:通过监听'line'事件,将每行输入存储在数组buf中。
  3. 解析输入:通过parseInt(buf[0])将第一行输入转换为一个整数n,表示后续字符串的数量。通过buf.slice(1)获取从第二行开始的输入文本,并将其存储在数组str中。
  4. 处理字符串并输出结果:使用for...of循环遍历数组str。对于每个字符串,使用正则表达式匹配是否符合条件/.*?ong,.*?ong\./。如果匹配成功,则通过replace方法将匹配到的部分替换为" qiao ben zhong.“,然后将结果输出到控制台。如果不匹配,则输出"Skipped”。

.

JavaScript(node)代码:

const readline = require("readline");
const rl = readline.createInterface({
    
    
    input: process.stdin,
});

let buf = [];

rl.on('line', (input) => {
    
    
    buf.push(input);
});

rl.on('close', () => {
    
    
    const n = parseInt(buf[0]);
    const str = buf.slice(1);
    for (let i of str) {
    
    
        if (i.match(/.*?ong,.*?ong\./)) {
    
    
            console.log(i.replace(/ [a-z]+ [a-z]+ [a-z]+\./g, ' qiao ben zhong.'));
        } else {
    
    
            console.log("Skipped");
        }
    }
});

.

复杂度分析:

时间复杂度:O(n)
空间复杂度:O(n)

猜你喜欢

转载自blog.csdn.net/Mredust/article/details/133519117