模拟题,用JAVA方便点。。感觉还是不顺手啊,要写各种泛型真麻烦,这么水的题都写了一小时。。真捉鸡啊
import java.util.Map; import java.util.Scanner; import java.util.TreeMap; import java.util.TreeSet; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int count = 0; while (sc.hasNextLine()) { String line = sc.nextLine().trim(); if ("#".equals(line)) break; count++; String[] ss = line.split(","); Map<Character, TreeSet<Character>> map = new TreeMap<Character, TreeSet<Character>>(); for (String s : ss) { String[] sp; if (s.indexOf('-') != -1) { sp = s.split("-"); for (char c : sp[0].toCharArray()) { TreeSet<Character> set = map.get(c); if (set == null) set = new TreeSet<Character>(); for (char cc : sp[1].toCharArray()) set.remove(cc); map.put(c, set); } } else if (s.indexOf('+') != -1) { sp = s.split("\\+"); for (char c : sp[0].toCharArray()) { TreeSet<Character> set = map.get(c); if (set == null) set = new TreeSet<Character>(); for (char cc : sp[1].toCharArray()) set.add(cc); map.put(c, set); } } else { sp = s.split("="); for (char c : sp[0].toCharArray()) { TreeSet<Character> set = map.get(c); if (set == null) set = new TreeSet<Character>(); set.clear(); for (char cc : sp[1].toCharArray()) set.add(cc); map.put(c, set); } } } System.out.print(count + ":"); boolean isFirst = true; TreeSet<Character> prev = null; TreeSet<Character> curr = null; for (char c : map.keySet()) { if (map.get(c).isEmpty()) continue; curr = map.get(c); if (isFirst) isFirst = false; else if (!prev.equals(curr) && prev.size() > 0) for (char cc : prev) System.out.print(cc); if (!curr.isEmpty()) System.out.print(c); prev = curr; } if (curr != null && curr.size() > 0) for (char cc : curr) System.out.print(cc); System.out.println(); } } }