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

R语言中验证数字折叠字符串是否为连续递增1序列

判断折叠数字字符串是否为连续递增1序列的R语言实现

搞定这个问题很简单!我们需要写一个R函数,尝试不同的初始数字拆分方式,验证拆分后的序列是不是每次递增1的。下面是具体的实现思路和代码:

思路解析

要验证这类折叠字符串,核心逻辑就是尝试所有可能的初始数字长度:

  • 初始数字的长度不可能超过字符串总长度的一半(毕竟至少要拆出两个数字,比如长度为5的字符串,初始最长只能是2位,否则剩下的字符不够组成第二个数字)
  • 对每个可能的初始长度,提取第一个数字,然后依次生成后续应该出现的数字(每次+1),把这些数字拼接成字符串后和原字符串对比,匹配就说明符合要求

R代码实现

is_consecutive_sequence <- function(s) {
  str_length <- nchar(s)
  # 初始数字最长为字符串长度的一半(向下取整)
  max_initial_len <- floor(str_length / 2)
  
  for (len in 1:max_initial_len) {
    # 提取第一个数字并转为数值
    current <- as.numeric(substr(s, 1, len))
    # 存储预期的数字字符串
    expected_parts <- c(as.character(current))
    
    # 不断生成下一个数字,直到拼接后的长度等于原字符串
    while (nchar(paste(expected_parts, collapse = "")) < str_length) {
      current <- current + 1
      expected_parts <- c(expected_parts, as.character(current))
    }
    
    # 对比拼接后的字符串和原字符串
    if (paste(expected_parts, collapse = "") == s) {
      return(TRUE)
    }
  }
  
  # 所有可能都不匹配,返回FALSE
  return(FALSE)
}

代码说明

  • 函数接收目标字符串s作为输入
  • 循环遍历所有可能的初始数字长度(从1到字符串长度的一半)
  • 对每个初始长度,生成完整的预期数字序列并拼接成字符串,和原字符串完全匹配就返回TRUE
  • 如果所有初始长度都尝试后都不匹配,返回FALSE

测试示例

运行以下代码验证你的示例:

# 测试符合要求的案例
is_consecutive_sequence("91011")  # 输出 TRUE(对应9,10,11)
is_consecutive_sequence("89909192")  # 输出 TRUE(对应89,90,91,92)

# 测试不符合要求的案例
is_consecutive_sequence("18192123")  # 输出 FALSE(对应18,19,21,23,差值不为1)

也可以测试一些边界情况:

is_consecutive_sequence("12")  # TRUE(1,2)
is_consecutive_sequence("910")  # TRUE(9,10)
is_consecutive_sequence("112")  # FALSE(无论拆成1+12还是11+2,都不连续)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:08:03