题解 | #查找兄弟单词#

查找兄弟单词

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()){
        let tokens = line.split(' ');
        function equal(a, b) {
            if (a.length !== b.length) {
                return false;
            }
            for (let i = 0; i < a.length; i++) {
                if (a[i] !== b[i]) {
                    return false;
                }
            }
            return true;
        }
        let n = Number(tokens.shift());
        let k = Number(tokens.pop());
        let x = tokens.pop();
        let x_set = x.split('').sort();
        let sorted_tokens = [];
        let m = 0;
        for (let i = 0; i < n; i++) {
            let cur_set = tokens[i].split('').sort();
            if (equal(cur_set, x_set)) {
                if (x === tokens[i]) { // same word
                    continue;
                }
                m++;
                //insert_desc(sorted_tokens, tokens[i]);
                sorted_tokens.push(tokens[i]);
                // todo 找到第k大
            } else {
                continue;
            }
        }
        console.log(m);
        if (m < k) return; // not enough for kth
        for (let i = 0; i < k; i++) {
            let max_i = i;
            for (let j = i; j < m; j++) {
                if (sorted_tokens[max_i].localeCompare(sorted_tokens[j]) == 1) {
                    max_i = j;
                }
            }
            [sorted_tokens[max_i], sorted_tokens[i]] = [sorted_tokens[i], sorted_tokens[max_i]];
        }
        console.log(sorted_tokens[k - 1]);
        return;
    }
}()

首先明白单词中可能有重复的字母!

判断兄弟单词的方法:将字符数组按字典序排序,如果每个索引位置的字符都相同,就是兄弟单词。同时要注意和原始字符顺序不能相同。

解题过程中,首先截取字符个数n、排序位置k、单词x。

然后遍历tokens,如果是兄弟单词,m加一,并且加入到兄弟单词的数组中;否则跳过。

然后对兄弟单词的数组进行排序,只排序k次就行。

最后输出索引为k-1位置的兄弟单词。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务