首页 > 学院 > 开发设计 > 正文

栈的应用(二)

2019-11-11 03:17:12
字体:
来源:转载
供稿:网友

栈的应用二 行编辑程序

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

思路:

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

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

代码如下:

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(); 	 }	 }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表