题意 比较两个字典 按字典序输出所有添加 删除 修改的项 如果没有任何更新 输出 No changes
map的应用 对比两个字典 注意开始字符串的处理和字典可以为空
import java.math.BigInteger;import java.util.Collections;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Scanner;import java.util.Vector;public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); while(n--!=0){ Map<String,BigInteger> one = new HashMap<>(); Vector<String> ins = new Vector<>();//增加的键 Vector<String> des = new Vector<>();//减少的键 Vector<String> upd = new Vector<>();//修改的键 Vector<String> bal = new Vector<>();//不变的键 String str1 = scan.next(); String str2 = scan.next(); String ss1 = str1.substring(1, str1.length()-1); String ss2 = str2.substring(1, str2.length()-1); String[] s1 = ss1.split(","); String[] s2 = ss2.split(","); for(int i=0;i<s1.length;i++){ if(!(s1[i].equals("")||s1[i].equals(" "))){ int index = s1[i].indexOf(':'); String name = s1[i].substring(0, index); BigInteger num = new BigInteger(s1[i].substring(index+1)); one.put(name, num); } } for(int i=0;i<s2.length;i++){ if(!(s2[i].equals("")||s2.equals(" "))){ int index = s2[i].indexOf(':'); String name = s2[i].substring(0, index); BigInteger num = new BigInteger(s2[i].substring(index+1)); if(!one.containsKey(name)){ ins.add(name); continue; }else{ BigInteger b = one.get(name); if(b.compareTo(num)!=0){ one.put(name, new BigInteger("-1")); }else{ one.put(name, new BigInteger("-2")); } } } } Iterator<Map.Entry<String, BigInteger>> entries = one.entrySet().iterator(); BigInteger a1 = new BigInteger("-1"); BigInteger a2 = new BigInteger("-2"); while(entries.hasNext()){ Map.Entry<String, BigInteger> entry = entries.next(); if(entry.getValue().compareTo(a2)==0){ bal.add(entry.getKey()); }else if(entry.getValue().compareTo(a1)==0){ upd.add(entry.getKey()); }else{ des.add(entry.getKey()); } } Collections.sort(ins); Collections.sort(des); Collections.sort(upd); Collections.sort(bal); if(upd.isEmpty()&&ins.isEmpty()&&des.isEmpty()){ System.out.PRintln("No changes"); }else{ if(!ins.isEmpty()){ System.out.print("+"); for(int i=0;i<ins.size();i++){ if(i!=ins.size()-1){ System.out.print(ins.get(i)+","); }else{ System.out.print(ins.get(i)); } } //if(n!=0) System.out.println(); } if(!des.isEmpty()){ System.out.print("-"); for(int i=0;i<des.size();i++){ if(i!=des.size()-1){ System.out.print(des.get(i)+","); }else{ System.out.print(des.get(i)); } } //if(n!=0) System.out.println(); } if(!upd.isEmpty()){ System.out.print("*"); for(int i=0;i<upd.size();i++){ if(i!=upd.size()-1){ System.out.print(upd.get(i)+","); }else{ System.out.print(upd.get(i)); } } //if(n!=0) System.out.println(); } } //if(n!=0) System.out.println(); } } public static int f(String str1,String str2){ if(str1.equals(str2)){ return 0; }else{ int index1 = str1.indexOf(":"); int index2 = str2.indexOf(":"); BigInteger b1 = new BigInteger(str1.substring(index1+1)); BigInteger b2 = new BigInteger(str2.substring(index2+1)); return b2.compareTo(b1); } }}
新闻热点
疑难解答