Python程序检查是否可以获得一对数字和任意数量的三元组数字
假设我们有一个数字字符串 s。我们必须检查是否有一些排列,我们可以有一对相同的字符,字符串的其余部分形成任意数量的相同字符的三元组。
因此,如果输入类似于 s = "21133123",则输出将为 True,因为有两个 2 可以形成 "22" 作为对,"111"、"333" 作为两个三元组。
为了解决这个问题,我们将遵循以下步骤:
d := 一个包含 s 中存在的每个元素频率的列表
对于 d 中的每个 k,执行以下操作:
d[k] := d[k] - 2
如果对于 d 中的所有 i,d[i] 模 3 为 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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP