到底买不买(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乙级 文章被收录于专栏
做题记录
字节跳动公司福利 1294人发布