1、如果收到一个‘#’,删掉一个已经收到的字符,不包括‘#’;
2、如果收到一个‘@’,把收到的一整行删掉(‘#’和‘@’都是不可见字符)
每行是一个整数T代表有T组数据。
每组数据的开始时一个字符串,字符串长度小于100,每个字符一定是(‘a’~'z','A'~'Z',',','*','!','(',')','+','@','#')的一个
输出:
每组数据输出一行经过行编辑器编辑过的字符串。
样例输入
3 whli##ilr#e(s#*s) outcha@putchar(*s=#++) returnWA##A!!##C
样例输出
while(*s) putchar(*s++) returnAC
算法思想:
队列存字符,遇到‘#’或‘@’则进行相应的操作
注意:
判断读取‘#’且队列为空的特殊情况,否则会编译失败。
源代码:
import java.util.Scanner; import java.util.Vector; public class LineCompile { public static void main(String args[]) { Scanner reader = new Scanner(System.in); int n = reader.nextInt(); String[] str = new String[n]; for (int i = 0; i < n; i++) { Scanner reader1 = new Scanner(System.in); str[i] = reader1.nextLine(); } for (String string : str) { // System.out.println(string); Vector st = new Vector(); for (int i = 0; i < string.length(); i++) { char ch = string.charAt(i); if (ch == '#') { while (!st.isEmpty()) { st.removeElement(st.lastElement()); } } else if (ch == '@') { st.clear(); } else { st.add(ch); } } String temp = ""; while (!st.isEmpty()) { temp += st.firstElement(); st.removeElement(st.firstElement()); } System.out.println(temp); } } }
如果发现了什么bug或者有更好的方法,欢迎交流。