首页 > 试题广场 >

乒乓球筐

[编程题]乒乓球筐
  • 热度指数:4422 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
nowcoder有两盒(A、B)乒乓球,有红双喜的、有亚力亚的……现在他需要判别A盒是否包含了B盒中所有的种类,并且每种球的数量不少于B盒中的数量,该怎么办呢?

输入描述:
输入有多组数据。
每组数据包含两个字符串A、B,代表A盒与B盒中的乒乓球,每个乒乓球用一个大写字母表示,即相同类型的乒乓球为相同的大写字母。
字符串长度不大于10000。


输出描述:
每一组输入对应一行输出:如果B盒中所有球的类型在A中都有,并且每种球的数量都不大于A,则输出“Yes”;否则输出“No”。
示例1

输入

ABCDFYE CDE<br/>ABCDGEAS CDECDE

输出

Yes<br/>No
import java.util.*;
public class Main{
    public static void main(String[]args){
        Scanner in=new Scanner(System.in);
        while(in.hasNext()){
            String str1=in.next();
            String str2=in.next();
            boolean ret=find(str1,str2);
            if(ret){
                System.out.println("Yes");
            }else{
                System.out.println("No");
            }
        }
    }
    public static boolean find(String str1,String str2){
        
        int[]arr=new int[26];
        //定义容量为26的数组存储数字
        //遍历字符串1,存储对应的字母数量 ,比如A对应的就是数组0号元素
        for(int i=0;i<str1.length();i++){
            char ch=str1.charAt(i);
            int temp=(int)(ch-65);
            arr[temp]++;
        }
        //遍历字符串2,找到对应字母下标,进行相减
        for(int i=0;i<str2.length();i++){
            char ch=str2.charAt(i);
            int temp=(int)(ch-65);
            //对应下标容量为0,说明A盒子没有,或者A盒子里的数量小于B盒子的数量
            //返回false;
            if(arr[temp]==0){
                return false;
            }
            arr[temp]--;
        }
        //结束字符串2的遍历,没有返回false。说明满足条件
        return true;
    } 
}
发表于 2022-03-10 17:22:54 回复(0)
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while (sc.hasNext()){
            Map<Character,Integer>map=new HashMap<>();
            String[]str=new String[2];
            str=sc.nextLine().split(" ");
            /*System.out.println(str[0]);
            System.out.println(str[1]);*/
            String searh = searh(str, map);
            System.out.println(searh);
        }

    }

    private static String searh(String[] str,Map<Character,Integer> map) {
        for (int i = 0; i <str[0].length() ; i++) {
            if (map.containsKey(str[0].charAt(i))){
                map.put(str[0].charAt(i),map.get(str[0].charAt(i))+1);
            }else {
                map.put(str[0].charAt(i),1);
            }
        }
        for (int i = 0; i <str[1].length() ; i++) {
            if (map.containsKey(str[1].charAt(i))){
                map.put(str[1].charAt(i),map.get(str[1].charAt(i))-1);
            }else {
                return "No";
            }
        }
        for (int i = 0; i <str[0].length() ; i++) {

            if (map.get(str[0].charAt(i))<0){
              //  System.out.println(map.get(str[0].charAt(i)));
                return "No";
            }
        }
        return "Yes";
    }
}
笨比解法 我摊牌了 我是笨比😥
发表于 2020-07-22 17:58:53 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()){
            char[] A = in.next().toCharArray();
            char[] B = in.next().toCharArray();
            if(just(A,B)){
                System.out.println("Yes");
            }else {
                System.out.println("No");
            }
        }
    }

    private static boolean just(char[] a, char[] b) {
       int count=0;
       int flag =b.length;
        for (int i = 0; i <a.length ; i++) {
            for (int j = 0; j < b.length; j++) {
                if(b[j]==a[i]){
                    count++;
                    b[j]='\0';
                    break;
                }
            }
        }
        if(count==flag){
            return true;
        }else {
            return false;
        }
    }
}

终于好了,老是数组越界 吐了!!!
发表于 2020-07-21 23:43:47 回复(0)
import java.util.Scanner;

public class Main
{
	public static void main(String[] args)
	{
		Scanner in = new Scanner(System.in);
		while (in.hasNext())
		{
			boolean contain = true;
			StringBuffer input = new StringBuffer(in.next());
			char[] find = in.next().toCharArray();
			for (char c : find)
			{
				int index = input.indexOf(String.valueOf(c));
				if (index != -1)
					input.deleteCharAt(index);
				else
				{
					System.out.println("No");
					contain = false;
					break;
				}
			}
			if (contain)
				System.out.println("Yes");
		}
	}
}

发表于 2020-02-22 16:44:45 回复(0)