题解 | #查找兄弟单词#

查找兄弟单词

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] : "");
    }
})();

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

相关推荐

10-09 00:50
已编辑
长江大学 算法工程师
不期而遇的夏天:1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务