概述
本次仅仅选了一个题目进行作答,结果答题后只有90%的用例通过
题目
1、代写匿名信
题目名称:代写匿名信 小Q想要匿名举报XX领导不务正业! 小Q害怕别人认出他的字迹。 他选择从报纸上剪裁下来英文字母组成自己的举报信。 现在小Q找来了报纸,和自己的举报信的Txt, 你能帮他确定一下是否能够完成匿名信吗?
2、分析
考虑使用map的特性,模拟现实情况
3、代码
// 请关闭中文输入法,用英文的字母和标点符号。
// 如果你想运行系统测试用例,请点击【执行代码】按钮,如果你想提交作答结果,请点击【提交】按钮,
// 注意:除答案外,请不要打印其他任何多余的字符,以免影响结果验证
// 本OJ系统是基于 OxCoder 技术开发,网址:www.oxcoder.com
// 模版代码提供基本的输入输出框架,可按个人代码习惯修改
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str_0 = scan.nextLine().trim();
String words = str_0;
String str_1 = scan.nextLine().trim();
String msg = str_1;
scan.close();
String result = solution(words, msg);
System.out.println(result);
}
public static String solution(String words, String msg){
// TODO: 请在此编写代码
/*先判断报纸每个字母有多少个*/
final Map<Character,Integer> wordsMap = new HashMap<>();
/* 先自行加一个作用域 */
{
final char[] wordsArray = words.toCharArray();
for( int i=0; i < wordsArray.length; ++i ) {
final Character key = wordsArray[i];
final int value = wordsMap.getOrDefault(key, 0);
wordsMap.put(key , value + 1);
}
}
/* 使用报纸上的字母,用一个减掉一个 */
final char[] msgArray = msg.toCharArray();
for( int i=0; i< msgArray.length; ++i) {
final Character key = msgArray[i];
/* 查无此字母,直接返回 */
if(!wordsMap.containsKey(key)) {
return "No";
}
final int currentValue = wordsMap.get(key);
/* 字母已经被用完了,但是还需要一个 */
if(currentValue <= 0) {
return "No";
}
/* 用一个减掉一个 */
final int value = currentValue - 1;
/* 记录字母剩余的数量 */
wordsMap.put(key, value);
}
return "Yes";
}
}