gpt4 book ai didi

python - 查找字符和数字之间可能的双射

转载 作者:太空狗 更新时间:2023-10-30 01:02:48 25 4
gpt4 key购买 nike

假设您有一个字符串 S 和一个列表 L 中的数字序列,使得 len(S) = len(L)。

如果您可以找到字符串字符与序列中数字之间的双射,使得每个字符与一位且仅匹配一位数字,那么最简洁的检查方法是什么。

例如,“aabbcc”应该匹配 115522 而不是 123456 或 111111。

我有一个包含两个指令和循环的复杂设置,但我想知道是否有一种干净的方法可以做到这一点,也许是使用 Python 库中的一些函数。

最佳答案

我会为此使用一组:

In [9]: set("aabbcc")
Out[9]: set(['a', 'c', 'b'])

In [10]: set(zip("aabbcc", [1, 1, 5, 5, 2, 2]))
Out[10]: set([('a', 1), ('c', 2), ('b', 5)])

当且仅当映射是满射时,第二组的长度将等于第一组。 (如果不是,您将有一个字母的两个副本映射到第二组中的相同数字,反之亦然)

这是实现这个想法的代码

def is_bijection(seq1, seq2):
distinct1 = set(seq1)
distinct2 = set(seq2)
distinctMappings = set(zip(seq1, seq2))
return len(distinct1) == len(distinct2) == len(distinctMappings)

如果一个序列比另一个短,但已经建立了有效映射,这也将返回 true。如果序列必须具有相同的长度,您应该为此添加一个检查。

关于python - 查找字符和数字之间可能的双射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13489014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com