首页 > 试题广场 >

撤销与恢复

[编程题]撤销与恢复
  • 热度指数:3074 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 128M,其他语言256M
  • 算法知识视频讲解
撤销/恢复操作具有广泛的用途,比如word文档中输入一个单词,可以点撤销,然后可以再恢复。
编程实现如下功能:  从标准输入读取到一个字符串,字符串可包含0个或多个单词,单词以空格或者tab分隔; 如果遇到 "undo" 字符串,表示"撤销"操作,前一个字符串被撤销掉; 如果遇到"redo"字符串,表示恢复刚才撤销掉的字符串.
例如:   输入字符串 "hello undo redo world.",  对字符串中的 undo 和 redo 处理后, 最终输出的结果为 "hello world."

输入描述:
一行字符串: 包含0个或多个单词,单词以空格或者tab分隔


输出描述:
一行字符串: 由0个或多个单词组成,单词以空格分隔
示例1

输入

hello undo redo world.

输出

hello world.
提供一个JavaScript代码啦~~~
代码量炒鸡低~~~成功AC
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()){
        let tokens = line.split(' ');
        let curr = 0;
        let str = [];
        for (let i = 0; i < tokens.length; i++) {
            if (tokens[i] !== "undo" && tokens[i] !== "redo") {
                str.push(tokens[i]);
                curr ++;
            } else if (i + 1 < tokens.length && tokens[i] === "undo" && tokens[i + 1] === "redo") {
                i ++;
            } else if (tokens[i] === "undo") {
                str.splice(curr - 1, 1);
            }
        }
        
        console.log(str.join(" "));
    }
}()


发表于 2023-03-12 23:33:16 回复(0)

问题信息

上传者:小小
难度:
1条回答 3998浏览

热门推荐

通过挑战的用户

撤销与恢复