栈的应用(二)

来源:互联网 发布:风人之戒,不可慎乎 编辑:程序博客网 时间:2024/05/21 20:28

栈的应用二 行编辑程序

当用户发现刚刚刚输入的一个字符是错的时,可补进一个退格符“#”,以表示前一个字符无效;如果发现当前键入的行内差错较多或难以补救,则可以键入一个退行符“@”,以表示当前行中的字符均无效;

思路:

每当拿到一个字符后进行判别:

如果它既不是退格符也不是换行符,则将该字符压入栈顶;如果是一个退格符,判断栈内是否为空,不为空则从栈顶删去一个字符;如果它是一个退行符,则将字符栈清为空栈;

代码如下:

import java.util.ArrayList;import java.util.LinkedList;public class Compile { public static void main(String[] args) {    System.out.println(lineEdit("{[]@([])##}")); }  public static String lineEdit(String cc){ LinkedList<Character> stack=new LinkedList<Character>(); int len = cc.length(); for (int i = 0; i < len; i++) {switch (cc.charAt(i)) {case '#':if(stack.size()!=0){stack.pop();break;}case '@':stack.clear();break;default:stack.push(cc.charAt(i));break;} }        ArrayList<Character> li = new ArrayList(stack);        StringBuffer sbr=new StringBuffer();        for (int i =  li.size()-1; i >-1; i--) {sbr.append(li.get(i));} return sbr.toString();  } }


0 0
原创粉丝点击