用 Python 编写程序检查我们能否得到一对数字和任意数量的数字三元组

pythonserver side programmingprogramming更新于 2025/12/24 19:56:17

假设我们有一个数字字符串 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

相关文章


有用资源