题解 | #查找兄弟单词#

查找兄弟单词

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

就是题意有点模糊:

  1. 说了字典中可能有重复单词,所以 bca、bca算是两个单词吗?还是需要去重咧,我这里没做去重处理;
  2. 当没有第k个兄弟元素时不用输出,而不是输出null 3.这里的sort排序不能加参数(a, b)=>a-b,不然没用,不知道是为什么
let arr = readline().split(' ')
let count = parseInt(arr[0]), k = parseInt(arr[arr.length - 1])
// wordtoFind是待查找的单词; wordtoFindX是进行排序后的单词,供后面找兄弟元素用的
// 这里的sort不能加参数(a, b)=>a-b,不然没用,不知道牛客的引擎怎么搞的!!
let wordtoFind = arr[arr.length - 2], wordtoFindX = wordtoFind.split('').sort().join('')
// 没说清楚啊,字典中可能有重复单词,所以 bca、bca算是两个单词吗
// 1. 先找兄弟单词好了
let tempArr = []
for(let i = 1; i < arr.length - 2; i++) {
    if (judgeBroWord (wordtoFind , arr[i])) {
        tempArr.push(arr[i])
    }
}
console.log(tempArr.length)
// 2.找到了再对兄弟单词排序,输出所找的单词。tempArr.length < k时不做输出,不需要输出null
if (tempArr.length >= k) {
    //     对tempArr进行排序,并输出第k个
    console.log(tempArr.sort()[k-1])
}

function judgeBroWord (word1 , word2) {
    if (word1 === word2 || word1.length !== word2.length) {
//         一样的不算是兄弟; 长度不同的不是兄弟
        return false
    }
//     剩下的长度一样了,就将单词拆成字符进行排序,如zad、zda都变成了adz,这样比较一样就可以了
    let word2x = word2.split('').sort().join('')
    if (wordtoFindX === word2x) {
        return true
    } else {
        return false
    }
}


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务