解析:这道题我的思路也是看了下别人之后理解的,首先遍历一遍总的手串,存到int数组里,因为最大也就是Z,所以下标最多也没超过150,然后开始遍历一遍需要的手串字符,将字符转换成下标,判断该下边的int数组是否>0,也就是是否存储过,如果有就将该下标–,因为后面还要判断,有重复的情况,如果没有,就将判断缺少次数的变量++。
public class Pta_1039 {
public static void main(String[] args) throws IOException {
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
String all = buf.readLine();
String should = buf.readLine();
int[] ch = new int[150];//所有的数
for (int i = 0; i < all.length(); i++) {
int c = all.charAt(i);
ch[c]++;//将所有的数作为下标
}
//System.out.println(Arrays.toString(ch));
boolean flag = true;
int lack=0;
for (int i = 0; i < should.length(); i++) {//需要的数
int c = should.charAt(i);
if (ch[c] > 0) {
ch[c]--;
} else {
lack++;
flag = false;
}
}
if(flag){
System.out.println("Yes "+(all.length()-should.length()));
}else{
System.out.println("No "+lack);
}
}
}