数据结构-栈的使用之行编辑程序

Posted 大扑棱蛾子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构-栈的使用之行编辑程序相关的知识,希望对你有一定的参考价值。

一个简单的行编辑器程序的功能是:接收用户从终端输入的程序或数据,对用户输入的一行数据做处理,#表示退格键,删除#前的一个字符。@表示@符号之前的数据均无效。

比如用户输入了 gosd##od实际有效字符是good,当用户输入了pgm@progre#am实际有效的是program

思路分析

将一行的字符依次读入栈中,遇到#取出栈顶数据,若遇到@则清空栈。

实现


import java.util.Arrays;
import java.util.Stack;
import java.util.stream.Collectors;

/**
 * 行编辑器
 *
 * @author jaune
 */
public class LineEditor 

    public String handle(String line) 
        char[] chars = line.toCharArray();
        Stack<Character> stack = new Stack<>();
        for (char ch : chars) 
            if (stack.isEmpty()) 
                if (ch != '#' && ch != '@') 
                    stack.push(ch);
                
             else 
                if (ch == '#') 
                    stack.pop();
                 else if (ch == '@') 
                    stack.clear();
                 else 
                    stack.push(ch);
                
            
        
        Character[] res = new Character[stack.size()];
        stack.toArray(res);
        stack.clear();
        return Arrays.stream(res).map(String::valueOf).collect(Collectors.joining());
    

以上是关于数据结构-栈的使用之行编辑程序的主要内容,如果未能解决你的问题,请参考以下文章

数据结构-栈的使用之行编辑程序

栈的应用之行编辑程序

GTK经常使用控件之行编辑( GtkEntry )

shell编程之行编辑器 - sed 对文件进行操作

shell编程之行编辑器 - sed 对文件进行操作

数据结构入门栈的应用