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