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

基于Python实现01字符串中连续1的区间编码算法

实现01字符串的连续1索引区间提取

这是个典型的字符串遍历处理需求,核心是跟踪连续1的起始和结束位置,我来给你详细拆解实现思路,再附上多语言的代码示例:

核心思路

  1. 初始化变量:准备一个空数组存储结果,用一个变量记录当前连续1的起始索引(初始为null/None,表示未进入1的序列)。
  2. 遍历字符串:逐个检查每个字符及其索引:
    • 当遇到'1'时:如果尚未进入1序列,就把当前索引设为起始位置。
    • 当遇到'0'时:如果正处于1序列中,说明连续1到此结束,将[起始索引, 当前索引-1]加入结果数组,然后重置起始索引。
  3. 处理末尾的1序列:遍历结束后,如果起始索引不为空,说明最后一段是连续1,需要把[起始索引, 字符串最后一位索引]补充到结果中。

Python 实现示例

def get_one_intervals(s):
    intervals = []
    start = None
    for idx, char in enumerate(s):
        if char == '1':
            # 进入新的连续1序列
            if start is None:
                start = idx
        else:
            # 连续1序列结束
            if start is not None:
                intervals.append([start, idx - 1])
                start = None
    # 处理字符串末尾的连续1
    if start is not None:
        intervals.append([start, len(s) - 1])
    return intervals

# 测试用例
print(get_one_intervals("01101110"))  # 输出: [[1, 2], [4, 6]]
print(get_one_intervals("1"))         # 输出: [[0, 0]]
print(get_one_intervals("000"))       # 输出: []
print(get_one_intervals("111001"))    # 输出: [[0, 2], [5, 5]]

JavaScript 实现示例

function getOneIntervals(s) {
    const intervals = [];
    let start = null;
    for (let idx = 0; idx < s.length; idx++) {
        const char = s[idx];
        if (char === '1') {
            if (start === null) {
                start = idx;
            }
        } else {
            if (start !== null) {
                intervals.push([start, idx - 1]);
                start = null;
            }
        }
    }
    // 收尾处理末尾的连续1
    if (start !== null) {
        intervals.push([start, s.length - 1]);
    }
    return intervals;
}

// 测试用例
console.log(getOneIntervals("01101110")); // 输出: [[1,2],[4,6]]
console.log(getOneIntervals("1")); // 输出: [[0,0]]

关键细节说明

  • 索引是从0开始的,完全匹配你的示例要求。
  • 自动处理长度为1的1序列(比如输入"1"时输出[[0,0]])。
  • 空序列或者全0的输入会返回空数组,符合逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:03:10