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

如何在指定字符串中查找含指定数量特定字符的子串?

字符串GGACATCGCGGTGGATCGAC的目标子串查找方案

一、查找含恰好3个G的连续子串

方法思路

遍历字符串所有可能的连续子串,统计每个子串中G的出现次数,筛选出次数为3的子串。

代码实现

s = "GGACATCGCGGTGGATCGAC"
matches = []

# 遍历所有起始位置
for start in range(len(s)):
    # 遍历所有结束位置(确保子串从start到end连续)
    for end in range(start, len(s)):
        sub = s[start:end+1]
        if sub.count('G') == 3:
            matches.append(sub)

# 去重并按长度、字典序排序
unique_matches = sorted(list(set(matches)), key=lambda x: (len(x), x))

print("符合条件的子串(去重后):")
for item in unique_matches:
    print(item)

补充说明

  • 双重循环覆盖所有连续子串的可能组合
  • 使用count()方法快速统计字符出现次数
  • 去重是为了避免重复的子串(比如不同起始/结束位置生成相同子串),如果需要保留所有出现位置的子串,去掉set转换即可

二、查找含恰好2个G和1个C的连续子串

方法思路

同样遍历所有连续子串,同时统计G和C的数量,筛选出G=2且C=1的子串。

代码实现

s = "GGACATCGCGGTGGATCGAC"
matches = []

for start in range(len(s)):
    for end in range(start, len(s)):
        sub = s[start:end+1]
        g_num = sub.count('G')
        c_num = sub.count('C')
        if g_num == 2 and c_num == 1:
            matches.append(sub)

# 去重并排序
unique_matches = sorted(list(set(matches)), key=lambda x: (len(x), x))

print("符合条件的子串(去重后):")
for item in unique_matches:
    print(item)

补充说明

  • 若需求允许C的数量大于1,可将条件改为g_num == 2 and c_num >= 1
  • 若不需要去重,直接输出matches即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 12:22:42