网易互娱,第二题文件系统,有没有大佬分享一下代码啊。我这是该考虑的都考虑了,我想知道还有哪些坑。dup2可能产生新的key考虑了,open同一个文件输出同一个key考虑了。不晓得还该考虑啥 public class huyu02 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int t = in.nextInt();
for (int i = 0; i < t; i++) {
Map<Integer, String> map = new HashMap<>();
List<Integer> list = new LinkedList<>();
int n = in.nextInt();
in.nextLine();
int max = 0;
for (int j = 0; j < n; j++) {
String s = in.nextLine();
String[] temp = s.split("\\s+");
if (temp[0].equals("open")) {
if (list.size() == 0) {
map.put(0, temp[1]);
list.add(0);
System.out.println(0);
} else {
if (map.containsValue(temp[1])) {
for (Integer key : map.keySet()) {
if (map.get(key).equals(temp[1])) {
System.out.println(key);
break;
}
}
continue;
}
max = Collections.max(list) + 1;
// System.out.println(max);
for (int k = 0; k <= max; k++) {
if (!list.contains(k)) {
map.put(k, temp[1]);
list.add(k);
System.out.println(k);
break;
}
}
}
} else if (temp[0].equals("dup")) {
max = Collections.max(list) + 1;
for (int k = 0; k <= max; k++) {
if (!list.contains(k)) {
map.put(k, map.get(Integer.valueOf(temp[1])));
list.add(k);
System.out.println(k);
break;
}
}
} else if (temp[0].equals("dup2")) {
map.put(Integer.valueOf(temp[2]), map.get(Integer.valueOf(temp[1])));
if (!list.contains(temp[2])) {
list.add(Integer.valueOf(temp[2]));
}
} else if (temp[0].equals("close")) {
int value = Integer.valueOf(temp[1]);
map.remove(value);
for (int p = 0; p < list.size(); p++) {
if (list.get(p) == value) {
list.remove(p);
break;
}
}
} else if (temp[0].equals("query")) {
System.out.println(map.get(Integer.valueOf(temp[1])));
}
}
}
}
}
全部评论
(1) 回帖