如何查找字符串中最长的相邻重复值并为其添加括号
功能实现:为字符串最长相邻重复段添加括号标记
需求说明
输入连续字符串,将其中长度最长的相邻重复字符段用括号包裹,示例如下:
输入:
"34455677775412"
期望输出:"344556(7777)5412"
原有代码问题梳理
你当前编写的代码存在以下问题:
- 语法错误:
if J[x] == J[x+1]判断语句后缺少英文冒号,同时代码缩进不符合Python语法要求 - 逻辑缺陷:仅截取长度为2的子串做比较,无法识别长度大于2的连续重复段
- 输出逻辑错误:括号打印时机不对,无法将完整的连续重复段包裹在括号内
修复后可运行代码
J = "34455677775412" # 空串直接返回 if not J: print("") exit() # 第一步:遍历统计最长连续重复段的起始位置和长度 max_len = 1 current_len = 1 max_start = 0 current_start = 0 for i in range(1, len(J)): if J[i] == J[i-1]: current_len += 1 else: # 更新最长段信息 if current_len > max_len: max_len = current_len max_start = current_start # 重置当前连续段计数 current_len = 1 current_start = i # 循环结束后补充判断最后一段连续内容 if current_len > max_len: max_len = current_len max_start = current_start # 第二步:拼接生成带括号的结果 result = J[:max_start] + "(" + J[max_start:max_start+max_len] + ")" + J[max_start+max_len:] print(result)
代码说明
- 先遍历全串统计所有连续重复段的长度和起始位置,记录最长段的信息
- 再根据最长段的位置拼接字符串,将对应段包裹在括号内
- 如果存在多个长度相同的最长连续重复段,默认标记第一个出现的段,如需调整标记逻辑可自行修改判断规则
内容的提问来源于stack exchange,提问作者emma.delia
相关产品推荐
相关产品推荐

