检查Python中每个数字的频率是否小于该数字


假设我们有一个数字n,我们必须检查n的每个数字的出现次数是否小于或等于数字本身。

因此,如果输入类似于n = 5162569,则输出将为True,因为数字和频率为(5, 2),(1, 1),(6, 2)和(9, 1),所有频率都小于或等于数字值。

为了解决这个问题,我们将遵循以下步骤:

  • 对于i从0到9,执行:
    • temp := n,cnt := 0
    • 当temp不为零时,执行:
      • 如果temp mod 10与i相同,则
        • cnt := cnt + 1
      • 如果cnt > i,则
        • 返回False
      • temp := (temp / 10)的商
  • 返回True

示例

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

 在线演示

def solve(n):
   for i in range(10):
      temp = n
      cnt = 0
      while temp:
         if temp % 10 == i:
            cnt += 1
         if cnt > i:
            return False
         temp //= 10
   return True
s = 5162569
print(solve(s))

输入

5162569

输出

True

更新于:2021年1月18日

103 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.