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

如何循环为单词插入点号分隔且避免出现连续点号的重复变体

问题原因

  • 第二层循环插入点时没有判断插入位置的字符属性,直接在已有.的相邻位置插入,就会产生连续点
  • 第一层循环生成的所有单次插点结果都存在lis里,但第二层循环只用到了第一层最后一次循环的sliceword变量,逻辑完全错位
  • 没有做去重处理,相同的变体会被多次输出

修正后代码

print("enter email without @gmail.com")
word = input("word: ")
n = len(word)
# 用集合存储天然去重
result = set()

# 生成所有插1个点的变体
for i in range(1, n):
    single_dot = word[:i] + "." + word[i:]
    result.add(single_dot)
    # 基于当前第一个点的位置,在后面插入第二个点,避免连续点和重复
    for j in range(i + 1, n):
        double_dot = word[:i] + "." + word[i:j] + "." + word[j:]
        result.add(double_dot)

# 排序后输出
for item in sorted(result):
    print(item)

逻辑说明

  • 直接基于原始单词插入分隔点,强制要求第二个点的位置必须在第一个点后至少1个字符的位置,从根源避免连续点生成
  • 用集合存储所有变体,自动过滤重复结果
  • 如果后续需要生成更多分隔点的变体,只需要按相同逻辑扩展循环即可,不需要在上一轮生成的带点字符串上二次修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:36:01