对K个不同字符的全排列组成的数组, 面试官从中随机拿走了一个, 剩下的数组作为输入, 请帮忙找出这个被拿走的字符串?

对K个不同字符的全排列组成的数组, 面试官从中随机拿走了一个, 剩下的数组作为输入, 请帮忙找出这个被拿走的字符串?

  • 比如[“ABC”, “ACB”, “BAC”, “CAB”, “CBA”] 返回 “BCA”
  • 第一行输入整数n,表示给定n个字符串。(n == x!-1,2<=x<=10)
  • 以下n行每行输入一个字符串
  • 输出全排列缺少的字符串

递归解决:通过率85%


def hasLetters(result, letters, strs, length):
    if len(result) == length:
        if len(set(result)) == length and result not in strs:
            return result
        return None

    for letter in letters:
        temp = result.copy()
        temp.append(letter)
        tempResult = hasLetters(temp, letters, strs, length)
        if tempResult != None:
            return tempResult
    return None


num = int(input())
strs = []
for i in range(num):
    strs.append([var for var in input()])

letters = [var for var in strs[0]]
length = len(letters)


for letter in letters:
    result = []
    result += letter

    result = hasLetters(result, letters, strs, length)
    if result != None:
        break

print(''.join(result))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值