首页 > 学院 > 开发设计 > 正文

uva 12504 Updating a Dictionary(更新字典)

2019-11-06 07:14:20
字体:
来源:转载
供稿:网友

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表