uva 12504 Updating a Dictionary(更新字典)

来源:互联网 发布:p2p网管软件 编辑:程序博客网 时间:2024/04/28 11:44

题意  比较两个字典  按字典序输出所有添加 删除 修改的项   如果没有任何更新  输出  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);}}}


0 0