Python实现:统计指定长度递增子序列的数量
解决方法
你已经完成了序列分割的核心逻辑,接下来只需要实现递增子序列的判断逻辑,并整合到函数中完成统计即可。
关键思路:判断子序列是否递增
因为输入的序列是数字字符串,需要先将字符转成整数再比较。判断逻辑很直接:验证子序列中每一个元素都严格大于前一个元素。可以用Python内置的all()函数快速实现——它会检查迭代器中的所有条件是否都为True,只要有一个不满足就返回False。
完整代码实现
def subsequences(sequence, length): # 生成所有指定长度的子序列 splits = [sequence[i:i+length] for i in range(0, len(sequence), length)] count = 0 for subseq in splits: # 跳过长度不足的子序列(若原序列长度无法被目标长度整除) if len(subseq) != length: continue # 检查子序列是否递增:每个元素都大于前一个 is_increasing = all(int(subseq[i]) > int(subseq[i-1]) for i in range(1, length)) if is_increasing: count += 1 return count
代码说明
- 序列分割:保留你原有的列表推导式,生成所有按指定长度分割的子序列,存入
splits列表。 - 过滤无效子序列:如果原序列长度无法被目标长度整除,最后一段子序列会不足长度,直接跳过不统计。
- 递增判断与计数:遍历每个有效子序列,用
all()结合生成器表达式完成递增验证,符合条件则计数器加1。
测试验证
print(subsequences('1234', 2)) # 输出:2 print(subsequences('12135267', 2)) # 输出:3 print(subsequences('322123453678', 3)) # 输出:2
运行结果完全匹配你给出的示例要求。
内容的提问来源于stack exchange,提问作者Amelia Johnny
相关产品推荐
相关产品推荐

