Solution au problème Pintia——7-11 Sonner la cloche de Ben

7-11 Sonnez Ben Bell

Titre original:

Il y a un gars sur Weibo qui se fait appeler « Big Ben V » et qui sonne tous les jours pour inciter les codeurs à prendre bien soin d'eux et à se coucher tôt. Afin d'augmenter le plaisir de sonner la cloche, certains poèmes anciens seront modifiés. La méthode de correction est la suivante : allez en ligne pour rechercher des poèmes anciens qui riment avec "ong", et remplacez les trois mots à la fin de la phrase par "knock Ben Bell". Par exemple, Li He, un poète de la dynastie Tang, a un dicton célèbre : « À la recherche de chapitres et d'extraits de vieilles sculptures et d'insectes, suspendant des nœuds de jade comme rideaux à l'aube », dans lequel « ver » (chong) et « gong » " (gong) tous deux ont la rime de "ong". Ce poème a donc été changé en « À la recherche de chapitres et d'extraits, le vieil aigle cherche des chapitres et la lune de l'aube sonne derrière le rideau ».

Maintenant, je vous donne beaucoup de poèmes anciens et vous demande d'écrire un programme pour changer automatiquement les phrases avec la rime « ong » en « frapper la cloche ».

Format d'entrée :

L'entrée est d'abord donnée sur la première ligne sous la forme d'un entier positif N ne dépassant pas 20. Ensuite, il y a N lignes, chaque ligne donne un poème ancien en chinois Pinyin, divisé en phrases supérieures et inférieures, ,séparées par des virgules et .se terminant par un point. Les pinyin de deux caractères adjacents sont séparés par un espace. La question doit garantir que le pinyin de chaque mot ne dépasse pas 6 caractères, que la longueur totale de chaque ligne de caractères ne dépasse pas 100 et que la seconde moitié du poème doit comporter au moins 3 caractères.

Format de sortie:

Pour chaque vers de poésie, déterminez s’il contient la rime « ong ». Autrement dit, les mots à la fin des deux phrases se terminent par « ong ». Si cette rime est utilisée, corrigez la phrase en fonction du titre et affichez-la. Le format de sortie est le même que celui d'entrée, sinon Skippedla phrase sera ignorée.

.

Idées de résolution de problèmes :

  1. Importez readlinele module et créez un objet d'interface :readline introduisez d'abord le module et utilisez createInterfacedes méthodes pour créer un objet d'interface rl. Cet objet définit le flux d’entrée sur l’entrée standard.
  2. Lire l'entrée et stocker : en écoutant les 'line'événements, stockez chaque ligne d'entrée dans un tableau buf.
  3. Analyser l'entrée : en parseInt(buf[0])convertissant la première ligne d'entrée en un entier n, représentant le nombre de chaînes suivantes. En buf.slice(1)récupérant le texte saisi à partir de la deuxième ligne et en le stockant dans un tableau str.
  4. Traitez une chaîne et affichez le résultat : utilisez for...ofune boucle pour parcourir le tableau str. Pour chaque chaîne, utilisez une expression régulière pour déterminer si la condition est remplie /.*?ong,.*?ong\./. Si la correspondance réussit, replaceremplacez la partie correspondante par « qiao ben zhong. » via la méthode, puis affichez le résultat sur la console. S'il n'y a aucune correspondance, "Skipped" est affiché.

.

Code JavaScript (nœud) :

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");
        }
    }
});

.

Analyse de complexité :

Complexité temporelle : O(n)
Complexité spatiale : O(n)

Guess you like

Origin blog.csdn.net/Mredust/article/details/133519117