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

如何在R中生成字符串的重叠分段列表

滑动窗口重叠拆分字符串实现方案

你描述的逐字符滑动生成重叠分段的需求,属于典型的固定长度滑动窗口字符串切割场景,完全可以实现,核心逻辑如下:

通用实现逻辑

  • 首先获取输入字符串总长度n,确认设定的分段长度k合法:1 ≤ k ≤ n,参数不合法直接返回空结果
  • 遍历的起始下标范围为0到n - k(包含两端),每次截取当前下标开始、长度为k的子串
  • 收集所有截取的子串,就是目标重叠分段列表

示例验证

以输入字符串ABCDEFG(长度n=7)为例:

  • 当k=2时,遍历下标0~5,共生成6个分段,结果为AB、BC、CD、DE、EF、FG,和你给出的示例一致
  • 当k=3时,遍历下标0~4,共生成5个分段,结果为ABC、BCD、CDE、DEF、EFG,完全符合要求

可直接运行的Python实现代码

def sliding_window_split(input_str: str, window_size: int) -> list:
    str_length = len(input_str)
    # 非法参数校验
    if window_size < 1 or window_size > str_length:
        return []
    # 列表推导式生成所有滑动窗口子串
    return [input_str[i:i+window_size] for i in range(str_length - window_size + 1)]

调用测试

# 测试用例1:分段长度2
print(sliding_window_split("ABCDEFG", 2))
# 输出:['AB', 'BC', 'CD', 'DE', 'EF', 'FG']

# 测试用例2:分段长度3
print(sliding_window_split("ABCDEFG", 3))
# 输出:['ABC', 'BCD', 'CDE', 'DEF', 'EFG']

其他编程语言实现逻辑完全一致,仅字符串截取的语法存在差异:

  • Java使用inputStr.substring(i, i + windowSize)
  • JavaScript使用inputStr.slice(i, i + windowSize)
  • Go使用inputStr[i:i+windowSize]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:27:03