题解 | #查找兄弟单词#

查找兄弟单词

https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    while ((line = await readline())) {
        line = line.split(" ");
        let n = parseInt(line[0]);
        let x = line[line.length - 2];
        let k = line[line.length - 1];
        // 计算x中每个字母存在的次数
        let xObj = {};
        for (const val of x) {
            if (!xObj[val]) {
                xObj[val] = 1;
            } else {
                xObj[val]++;
            }
        }

        // 交换该单词字母顺序,不添加、删除、修改原有的字母,就是长度和原来的单词的长度相同
        // 兄弟单词要求和原来的单词不同
        let dicSingleWord = line
            .slice(1, line.length - 2)
            .filter((temp) => temp.length === x.length && temp !== x);
        let brotherWord = [];

        for (let i = 0; i < dicSingleWord.length; i++) {
            const temp = dicSingleWord[i];
            // 查看单词的每个字母是否都在字典单词中
            // 需要计算看当前单词中字符和x中每个字符的个数是否一致
            let flag = x.split("").every((v) => {
                if (
                    temp.indexOf(v) != -1 &&
                    temp.split("").filter((e) => e == v).length === xObj[v]
                ) {
                    return true;
                }
                return false;
            });
            if (flag) {
                brotherWord.push(temp);
            }
        }

        brotherWord = brotherWord.sort();
        console.log(brotherWord.length);
        console.log(brotherWord[k - 1] ? brotherWord[k - 1] : "");
    }
})();

#查找兄弟单词#
全部评论

相关推荐

不愿透露姓名的神秘牛友
12-03 15:41
已编辑
淘天 算法工程师 31.0k*16.0
点赞 评论 收藏
分享
如题,八股刚开始学,准备好好沉淀八股,但是害怕没实习经历,简历筛选过不去,现在找实习却感觉都是已读不回,接下来该怎么安排呢?求教
Java抽象带篮子:具体背什么八股我都帮你整理好了,可以去看看我的八股专栏,这个比较详细,如果你觉得内容有点多记忆负担比较大的话,我还在更新最常问八股整理贴,是不是很贴心?
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务