【发布时间】:2025-12-25 03:25:07
【问题描述】:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int testcase = Integer.parseInt(br.readLine());
for(int i = 0; i < testcase; i++) {
String input = br.readLine();
LinkedList<Character> list = new LinkedList<>();
int idx = 0;
for(int j = 0; j < input.length(); j++) {
if(input.charAt(j) != '<' && input.charAt(j) != '>' && input.charAt(j) != '-') {
list.add(idx, input.charAt(j));
idx++;
continue;
}
if(input.charAt(j) == '<' && idx != 0) {
idx--;
continue;
}
if(input.charAt(j) == '>' && idx <= list.size() - 1) {
idx++;
continue;
}
if(input.charAt(j) == '-' && idx != 0) {
list.remove(idx - 1);
idx--;
}
}
for(int k = 0; k < list.size(); k++) {
bw.write(list.get(k));
}
bw.write('\n');
}
bw.flush();
bw.close();
}
}
-
输入示例
2 <<BP<A>>Cd- ThIsIsS3Cr3t -
输出示例
BAPC ThIsIsS3Cr3t
时间限制为 2 秒。
我使用 BufferedReader 代替 Scanner 来加速性能,并使用 BufferedWriter 代替 System.out.println()。 但是,正确的答案是超时问题。 有没有办法在使用链表时降低时间复杂度?
【问题讨论】:
-
你必须使用 LinkedList 吗?我看不出在 ArrayList 上使用它会获得什么。
-
@Ryan 可能是问题的要求。还做了很多从列表中间的插入和删除操作,这是链表比数组更擅长的事情。
标签: java algorithm linked-list time-complexity