首页 > 试题广场 >

内容审核及去重

[编程题]内容审核及去重
  • 热度指数:80 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 512M,其他语言1024M
  • 算法知识视频讲解
    在掌阅的电子书内容审核系统中,需要对书籍文本中的数字信息进行规范化处理。例如,部分书籍可能存在同一数字的不同写法(如 “00123” 和 “123” 实际表示同一整数),或在数字前后夹杂字母(如 “章节 123:引言”“part0045 内容”)。为了准确统计文本中出现的不同整数,系统需要先对原始字符串进行处理:用空格替换所有非数字字符,提取出其中的整数序列,再去除重复的整数(注意:含前导零的整数需转换为不含前导零的形式后再判断是否重复,如 “0034” 与 “34” 视为同一整数)。
    你的任务是实现这一功能,返回处理后不同整数的数目,为掌阅的内容分析、关键词统计等功能提供支持,只有当两个整数的 不含前导零 的十进制表示不同, 才认为这两个整数也不同。

输入描述:
第一行为字符串word


输出描述:
不同整数的数目
示例1

输入

a123bc34d8ef34

输出

3

说明

不同的整数有 "123"、"34" 和 "8" 。注意,"34" 只计数一次。
def is_num(c): return '0' <= c <= '9' def main(): str_input = input() set0 = set() p0 = 0 n = len(str_input) while p0 < n: if not is_num(str_input[p0]): p0 += 1 else: tag0 = (str_input[p0] == '0') p1 = p0 p2 = p0 # 扫描整个数字序列 while p2 < n and is_num(str_input[p2]): if tag0: p1 = p2 tag0 = tag0 and (str_input[p2] == '0') p2 += 1 # 修复:处理纯零序列的情况 if tag0 and p1 < p2: # 整个序列都是零 set0.add("0") else: set0.add(str_input[p1:p2]) p0 = p2 print(len(set0)) if __name__ == "__main__": main()
发表于 2025-11-16 10:13:11 回复(1)