输入有多组数据。
每组数据包含两个字符串A、B,代表A盒与B盒中的乒乓球,每个乒乓球用一个大写字母表示,即相同类型的乒乓球为相同的大写字母。
字符串长度不大于10000。
每一组输入对应一行输出:如果B盒中所有球的类型在A中都有,并且每种球的数量都不大于A,则输出“Yes”;否则输出“No”。
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; } }
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"; } }笨比解法 我摊牌了 我是笨比😥
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; } } }
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"); } } }