在Python中检查我们是否可以得到一个数字对和任意数量的数字三元组

在Python中检查我们是否可以得到一个数字对和任意数量的数字三元组

假设我们有一个数字字符串s。我们必须检查是否有一些安排,我们可以有一对相同字符和剩余的字符串形成任意数量的相同字符的三元组。

所以, 如果输入为s = “21133123”,那么输出将是True,因为有两个2可以形成一个”22″的对和”111″,”333″作为两个三元组。

要解决这个问题,我们会按照以下步骤进行 –

  • d: 包含s中每个元素频率的列表

  • 对于d中的每个k,执行以下操作:

    • d[k] := d[k] – 2

    • 如果d[i] mod 3对于d中的所有i都为0,则

      • 返回 True
    • d[k] := d[k] + 2

  • 返回 False

示例

让我们看下面的实现以更好地理解

from collections import Counter
def solve(s):
   d = Counter(s)
   for k in d:
      d[k] -= 2
      if all(d[i] % 3 == 0 for i in d):
         return True
      d[k] += 2
   return False

s = "21133123"
print(solve(s))

输入

"21133123"

输出

True

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程