首页 > 试题广场 >

字符串全排列

[编程题]字符串全排列
  • 热度指数:1314 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
对K个不同字符的全排列组成的数组,  面试官从中随机拿走了一个, 剩下的数组作为输入,  请帮忙找出这个被拿走的字符串?
比如[“ABC”, “ACB”, “BAC”, “CAB”, “CBA”] 返回 “BCA”

输入描述:
第一行输入整数n,表示给定n个字符串。(n == x!-1,2<=x<=10)
以下n行每行输入一个字符串。


输出描述:
输出全排列缺少的字符串。
示例1

输入

5
ABC
ACB
BAC
CAB
CBA

输出

BCA
const perm = function (s) { 
    const result = []
    if (s.length <= 1) {
        return [s]
    } else { 
        for (let i = 0; i < s.length; i++) { 
            var c = s[i]
            var newStr = s.slice(0, i) + s.slice(i + 1)
            var l = perm(newStr)
            for (var j = 0; j < l.length; j++) { 
                var temp = c + l[j]
                result.push(temp)
            }
        }
    }
    return result
}

let n = Number(readline())
const ret = []
while(line = readline()){
    ret.push(line)
}
const result = perm(ret[0])
const set = new Set(ret)
const re = result.filter(item => !set.has(item))
console.log(re[0])
发表于 2019-09-03 15:59:36 回复(0)