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

如何修改字符串各子串的字符,以消除处理后字符串中的FFF与BBB序列

问题解决方案

你的原有思路存在以下几个缺陷,才会导致无法处理全部场景:

  • 固定拆分不重叠的3长度子串会忽略子串边界的连续字符,容易出现跨子串的「FFF」或「BBB」序列,无法被检测和处理
  • 子串修改后可能和相邻子串的首尾字符形成新的三连序列,拆分遍历的方式无法覆盖这类新增的异常序列
  • count('FF') >=2的判断逻辑仅能识别出3位全为F的子串,但是全量替换FF为BF的逻辑可能会引入不必要的修改,且没有对应处理BB的逻辑

推荐实现思路

采用单遍遍历修改的方案,保证全程不会出现三个连续的相同字符,且修改量最小:

  1. 将字符串转为可变列表,降低修改开销
  2. 从第3位(索引2)开始遍历每一个字符,检查当前字符和前两位是否完全相同
  3. 如果出现三个连续的F或B,直接将当前字符替换为另一个字符即可打断三连
  4. 遍历完成后将列表转回字符串就是最终结果

示例代码

origin_str = 'FFFBBFFBBFFBBFFBFFBFF'
str_list = list(origin_str)

for i in range(2, len(str_list)):
    # 检测是否出现三连相同字符
    if str_list[i] == str_list[i-1] == str_list[i-2]:
        # 替换当前字符为另一个字符打断三连
        str_list[i] = 'B' if str_list[i] == 'F' else 'F'

result = ''.join(str_list)
print(result)

内容的提问来源于stack exchange,提问作者Abdul Basit Niazi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:36:02