You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求Python/PostgreSQL脚本:检测16位以8开头字符串是否含6个及以上重复数字

检测16位以8开头数字串中是否存在任意6个及以上相同数字(Python/PostgreSQL实现)

问题背景

需要检测已验证的、长度固定16位且以8开头的数字字符串中,是否存在任意数字出现6次及以上(非仅限连续重复)。原代码仅能检测连续6位相同数字,无法满足需求。


Python 实现方案

使用collections.Counter统计每个数字的出现次数,直接判断是否有数字计数≥6:

from collections import Counter

def has_excessive_duplicates(num_str):
    # 统计每个数字的出现次数
    digit_counts = Counter(num_str)
    # 检查是否存在任意数字出现6次及以上
    return any(count >= 6 for count in digit_counts.values())

# 测试示例
print(has_excessive_duplicates("811811113111711"))  # 输出: True
print(has_excessive_duplicates("822222222255555"))  # 输出: True
print(has_excessive_duplicates("812345678901234"))  # 输出: False

说明

  • Counter会高效统计字符串中每个数字的出现频次
  • any()函数遍历计数结果,只要有一个数字满足条件就返回True,无需遍历所有数字
  • 由于输入已验证(16位、以8开头、纯数字),无需额外做格式校验

PostgreSQL 实现方案

针对数据库中的字符串字段,可通过拆分字符、分组统计的方式检测:

单个字符串检测

SELECT EXISTS (
    SELECT digit
    FROM unnest(string_to_array('811811113111711', NULL)) AS digit
    GROUP BY digit
    HAVING COUNT(digit) >= 6
) AS has_excessive_duplicates;

批量检测表中数据

假设表名为your_table,目标字段为target_str:

SELECT 
    target_str,
    EXISTS (
        SELECT digit
        FROM unnest(string_to_array(target_str, NULL)) AS digit
        GROUP BY digit
        HAVING COUNT(digit) >= 6
    ) AS has_excessive_duplicates
FROM your_table;

说明

  • string_to_array(target_str, NULL)将字符串拆分为单个字符的数组
  • unnest()将数组转换为行数据,方便分组统计
  • EXISTS子查询判断是否存在出现≥6次的数字,返回布尔结果

内容的提问来源于stack exchange,提问作者user20965237

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 10:02:26