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或者有更好的方法,欢迎交流。