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

字符串序列中匹配用户输入的三元组替换方案实现咨询

实现思路

拆解为3个核心步骤按顺序实现即可:

  • 第一步:校验子串存在性,定位匹配起始索引
    直接用字符串内置的find()方法判断user_input是否是main的子串,返回值为-1直接终止流程提示无匹配;如果有匹配,拿到子串在主串里的起始下标start_idx,计算结束下标end_idx = start_idx + len(user_input) - 1。
  • 第二步:定位命中的所有三元组
    先把主串按每3个字符拆分得到三元组列表,同时记录每个三元组在原主串里的起始、结束下标范围。遍历所有三元组的下标范围,只要该范围和子串的[start_idx, end_idx]存在重叠,就判定为命中三元组,记录这些三元组的索引位置即可。
  • 第三步:替换命中的三元组
    提前给alternatives字典构建反向映射:把相同值的三元组存为列表,键为原数字值,值为对应三元组列表。遍历之前命中的三元组索引,拿到原三元组后查alternatives得到对应分组编号,从反向映射的同分组列表中任选一个有效替代项替换原三元组,最后拼接所有三元组得到结果。
可运行代码示例
from random import choice

# 示例输入数据
alternatives = {"atr": "1", "atx": "1",
                "erf": "2", "erg": "2", "erl": "2",
                "ghe": "3", "gaz": "3",
                "bnv": "4", "bnn": "4"}
main = "atrerfghebnv"
user_input = "fgheb"

def process_strings(main, alternatives, user_input):
    # 步骤1:定位子串的起始、结束下标
    start_idx = main.find(user_input)
    if start_idx == -1:
        return "无匹配子串"
    end_idx = start_idx + len(user_input) - 1

    # 步骤2:拆分三元组,记录下标范围,筛选命中的三元组索引
    triplets = []
    triplet_ranges = []
    for i in range(0, len(main), 3):
        triplet = main[i:i+3]
        triplets.append(triplet)
        triplet_ranges.append((i, i+2))
    
    hit_indexes = []
    for idx, (t_start, t_end) in enumerate(triplet_ranges):
        # 区间重叠判定逻辑
        if not (t_end < start_idx or t_start > end_idx):
            hit_indexes.append(idx)
    
    # 步骤3:构建反向映射,替换命中三元组
    reverse_alt = {}
    for triplet, group_id in alternatives.items():
        reverse_alt.setdefault(group_id, []).append(triplet)
    
    for idx in hit_indexes:
        original = triplets[idx]
        group_id = alternatives[original]
        # 同组排除原三元组随机选,若无其他选项则保留原三元组
        candidates = [t for t in reverse_alt[group_id] if t != original]
        triplets[idx] = choice(candidates) if candidates else original
    
    return ''.join(triplets)

# 运行测试
print(process_strings(main, alternatives, user_input))
# 示例可能输出:atrerggazbnn

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:15:03