到底买不买(20)
到底买不买(20)
https://www.nowcoder.com/questionTerminal/2f13c507654b4f878b703cfbb5cdf3a5
使用Map键值对解题,先将摊主的珠串存入机会,并更新个数。
然后再遍历小红的珠串,若跟摊主的一样,则相同的珠串个数减一;摊主中无小红要的珠串,则将其存入,并记为-1。
遍历当前机集合的值,若值为-1,则说明少珠子,并记录缺少的个数。不少珠子,则输出多的个数
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String sell = sc.next();//摊主的珠串 String buy = sc.next();//小红想做的珠串 LinkedHashMap<Character, Integer> map = new LinkedHashMap<>(); //将摊主的珠串存入集合 for(int i =0; i<sell.length(); i++){ if(map.containsKey(sell.charAt(i))){ int num = map.get(sell.charAt(i)); num++; map.put(sell.charAt(i), num); }else{ map.put(sell.charAt(i), 1); } } //遍历小红的珠串,修改集合信息 for(int i=0; i<buy.length(); i++){ if(map.containsKey(buy.charAt(i))){ int count = map.get(buy.charAt(i)); count--; map.put(buy.charAt(i), count); }else{ map.put(buy.charAt(i), -1); } } //遍历当前集合,判断是否存在珠串缺少的情况 Iterator<Integer> iterator = map.values().iterator(); int num = 0;//多或者少的情况 boolean flag =true; while(iterator.hasNext()){ int next = iterator.next(); if(next<0){//即上面提到的键值对为-1的话,是少珠子的 flag = false; num+=next; } } //输出结果 //不存在缺少珠串的情况 if(flag) { System.out.println("Yes " + (sell.length()- buy.length())); }else{ //缺少珠串 System.out.println("No "+(-num)); } } }
PAT乙级 文章被收录于专栏
做题记录