华为OD机试-匿名信-2022Q4 A卷-Py/Java/JS

电视剧《分界线》里面有一个片段,男主为了向警察透露案件细节,且不暴露自己,于是将报刊上的字减下来,剪拼成匿名信。
现在又一名举报人,希望借鉴这种手段,使用英文报刊完成举报操作。
但为了增加文章的混淆度,只需满足每个单词中字母数量一致即可,不关注每个字母的顺序。解释:单词on允许通过单词no进行替代。
报纸代表newspaper,匿名信代表anonymousLetter,求报纸内容是否可以拼成匿名信。
输入描述
第一行输入newspaper内容,包括1-N个字符串,用空格分开
第二行输入anonymousLetter内容,包括1-N个字符串,用空格分开
.newspaper和anonymousLetter的字符串由小写英文字母组成,且每个字母只能使用一次
.newspaper内容中的每个字符串字母顺序可以任意调整,但必须保证字符串的完整性(每个字符串不能有多余字母)
.1 < N < 100,
1 <= newspaper.length,anonymousLetter.length <= 10^4

输出描述
如果报纸可以拼成匿名信返回true,否则返回false
示例一
输入

ab cd
ab
输出

true

示例二
输入

ab ef
aef
输出

false

示例三
输入

ab bcd ef
cbd fe
输出

true

示例四
输入

ab bcd ef
cd fe
输出

false

Java 代码

1

Python代码

import functools
 
#输入加排序一并做了
newspaper = [''.join(sorted(x)) for x in input().split(" ")]
anonymousLetter = [''.join(sorted(x)) for x in input().split(" ")]
 
flag = False
for letter in anonymousLetter:
    if letter not in newspaper:
        flag = True
        break
 
if flag:
    print(False)
else:
    print(True)

JS代码

function main(newspaper_str, anonymousLetter_str) {
    let newspaper = newspaper_str.split(" ")
    let anonymousLetter = anonymousLetter_str.split(" ")
    let char_count = {};
    for (let str of newspaper) {
        str = [...str].sort().join("");
        if (char_count.hasOwnProperty(str)) {
            char_count[str]+=1
        } else {
            char_count[str] = 1
        }
    }
    
    let result = true;
    for (let str of anonymousLetter) {
        str = [...str].sort().join("");
        if (char_count[str] > 0) {
            char_count[str]--;
        } else {
            result = false;
            break;
        }
    }
    
    console.log(result)
 
}
 
 
main("ab bcd ef", "cd fe")

你可能感兴趣的:(javascript,java,开发语言)