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

求保留偶数位置符号的算法及状态图、转移表设计方法

保留序列0-based偶数索引字符的算法与状态机设计

问题澄清

结合示例明确规则:移除输入序列中0-based奇数索引的字符(即第2、4、6...个字符,1-based计数),仅保留0-based偶数索引的字符(第1、3、5...个字符,1-based计数),拼接为输出序列。

状态机设计

状态定义

仅需两个状态即可完成跟踪:

  • S_Even:即将处理的是0-based偶数索引的字符(需要保留)
  • S_Odd:即将处理的是0-based奇数索引的字符(需要丢弃)

初始状态为 S_Even(第一个字符对应0-based索引0,属于偶数索引)。

转移规则

对每个输入字符执行以下逻辑:

  • 若当前状态为 S_Even:
    1. 输出当前字符(保留)
    2. 切换状态至 S_Odd(下一个字符为奇数索引)
  • 若当前状态为 S_Odd:
    1. 不输出当前字符(丢弃)
    2. 切换状态至 S_Even(下一个字符为偶数索引)

转移表

当前状态输入字符输出字符下一状态
S_Even任意(0/1)输入字符S_Odd
S_Odd任意(0/1)无S_Even

状态图文字说明

  • 起始点为 S_Even
  • S_Even 接收任意字符 → 输出该字符 → 跳转至 S_Odd
  • S_Odd 接收任意字符 → 无输出 → 跳转至 S_Even
  • 输入序列处理完毕后,终止流程

算法实现示例

伪代码

function keepEvenIndexChars(input):
    output = empty string
    currentState = S_Even
    for each char in input:
        if currentState == S_Even:
            output += char
            currentState = S_Odd
        else:
            currentState = S_Even
    return output

Python代码

def keep_even_index_chars(input_str):
    result = []
    for idx, char in enumerate(input_str):
        if idx % 2 == 0:
            result.append(char)
    return ''.join(result)

测试验证:

  • 输入 010101 → 输出 000
  • 输入 10011 → 输出 101
  • 输入 11101101 → 输出 1110

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:50:33