【简单】算法nodeJs:单词倒排

129 阅读1分钟

描述

对于给定的若干个单词组成的句子,每个单词均由大小写字母构成,单词间使用非字母字符分隔。输出以单词为单位逆序排放的结果,即仅逆序单词间的相对顺序,不改变单词内部的字母顺序。
特别地,在输出结果中,去除原有的分隔符,转而使用单个空格间隔单词。

输入描述:

在一行上输入若干个字符串,每个字符串长度为 1≦length(s)≦20 ,仅由大小写字母构成,代表一个单词。单词间还夹杂了一定数量的非字母字符(但保证是可见字符),代表分隔符。

除此之外,保证总字符长度不超过 104 。

输出描述:

在一行上输出一个句子,代表以单词为单位逆序排放的结果。单词间使用单个空格分隔。

示例1

输入 Nowcoder Hello
输出 Hello Nowcoder

示例2

输入 $bo*y gi!r#l
输出 l r gi y bo
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    while ((line = await readline())) {
        // 处理非字符成空格 + 处理2个或者2个以上的空格为一个空格
        let tokens = String(line)
            .replace(/[^A-z]/g, " ")
            .replace(/\s{2,}/g, " ");
        let arr = tokens.split(" ");
        arr.reverse();
        console.log(arr.join(" "));
    }
})();