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

R语言实现:生成字符串中I与L相互替换的所有定序组合

R语言实现I/L可互换的字符串全组合生成

需求说明

针对输入的字母字符串,保持原有字符排列顺序不变,仅允许字符I和L互相替换,生成所有合法的组合结果。
示例输入:"IVGLWEA"
预期输出共4种组合:

"IVGLWEA"
"LVGLWEA"
"LVGIWEA"
"IVGIWEA"

实现代码

generate_il_combinations <- function(input_str) {
  # 将输入字符串拆分为单个字符向量
  single_chars <- strsplit(input_str, "")[[1]]
  
  # 为每个字符位置生成可选值:非I/L字符固定为原值,I/L位置可选I/L两个值
  pos_options <- lapply(single_chars, function(ch) {
    if (ch %in% c("I", "L")) {
      return(c("I", "L"))
    } else {
      return(ch)
    }
  })
  
  # 生成所有位置可选值的笛卡尔积
  comb_grid <- expand.grid(pos_options, stringsAsFactors = FALSE)
  
  # 将每行的字符合并为完整字符串,去重后返回
  res <- apply(comb_grid, 1, paste, collapse = "")
  return(unique(res))
}

使用方法与测试

直接调用函数传入目标字符串即可:

# 测试示例
test_input <- "IVGLWEA"
generate_il_combinations(test_input)

运行输出:

[1] "IVGLWEA" "LVGLWEA" "IVGIWEA" "LVGIWEA"

注意事项

  • 上述代码默认区分字符大小写,若需要小写i/l也支持互换,可将判断条件修改为if (toupper(ch) %in% c("I", "L")),返回值同步增加小写选项即可。
  • 若输入字符串中不存在I或L,函数仅返回原字符串,不会生成冗余结果。
  • 若字符串中I/L的总数量超过20个,生成的组合总数会超过百万级,需留意内存占用情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:48:20