如何在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
相关产品推荐
相关产品推荐

