当前位置: 首页 > news >正文

字符串相似度(动态规划)

# 问题描述给定一段受损的 DNA 碱基序列 dna1,在每次只操作一个碱基的情况下,将其以最少的操作步骤将其还原到未受损的 DNA 碱基序列 dna2。只可以对 DNA 碱基序列中的一个碱基进行三种操作:
1. 增加一个碱基
2. 去除一个碱基
3. 替换一个碱基## 输入描述:输入两段 DNA 碱基序列,每段分一行输入第一行为第一段受损的 DNA 碱基序列 dna1第二行为第二段未受损的 DNA 碱基序列 dna2## 输出描述:最小操作步骤数**备注**:0 <= dna1.length, dna2.length <= 500dna1 和 dna2 由大写英文字母 A、G、C、T 组成**示例 1****输入**AGCTTAGCAGCTAGCT**输出**2**说明**AGCTTAGC -> AGCTAGC(删除 T)AGCTAGC -> AGCTAGCT(增加 T)**示例 2****输入**AGCCGAGCGCTAGCT**输出**4**说明**AGCCGAGC -> GCCGAGC(删除 A)GCCGAGC -> GCTGAGC(将 C 替换为 T)GCTGAGC -> GCTAGC(删除 G)GCTAGC -> GCTAGCT(增加 T)

算法分析: 

  • 它通过递归比较两个字符串,考虑插入、删除和替换操作来计算需要的最小编辑次数

代码: 

public class Main {public static int correct_len(String dna1, String dna2, int ans) {if (dna1 == "") {return ans + dna2.length();} else if (dna2 == "") {return ans + dna1.length();} else if (dna1.charAt(0) == dna2.charAt(0)) {return correct_len(dna1.substring(1), dna2.substring(1), ans);}return Math.min(correct_len(dna2.charAt(0) + dna1, dna2, ans + 1), Math.min(correct_len(dna1.substring(1), dna2, ans + 1),correct_len(dna1.substring(1), dna2.substring(1), ans + 1)));}public static int solution(String dna1, String dna2) {return correct_len(dna1, dna2, 0);}public static void main(String[] args) {// You can add more test cases hereSystem.out.println(solution("AGCTTAGC", "AGCTAGCT") == 2);System.out.println(solution("AGCCGAGC", "GCTAGCT") == 4);}
}


http://www.mrgr.cn/news/36906.html

相关文章:

  • VS Code使用Git Bash终端
  • 利用香港多IP服务器建站蜘蛛池执行SEO策略的实践
  • 大数据新视界 --大数据大厂之 Spark Streaming 实时数据处理框架:案例与实践
  • Android compose 的基本环境搭建
  • el-table+el-form实现表单校验和解决不垂直居中导致的问题
  • OccLLaMA:首个结合3D占用预测、语言、行为构建的生成式世界模型
  • 物联网网络中集中式与分布式SDN环境的比较分析
  • ps快速更换电商图片背景,轻松变成白底图
  • VulnStack-红日靶机(二)
  • web安全攻防渗透测试实战指南_web安全攻防渗透测试实战指南,零基础入门到精通,收藏这一篇就够了
  • 0基础学前端 day4
  • 微调(Fine-tuning)
  • 2024年【烟花爆竹经营单位主要负责人】免费试题及烟花爆竹经营单位主要负责人考试技巧
  • 【vue3】登录功能怎么实现?
  • 离散化 ---( 求区间和)
  • 国产化框架PaddleYOLO结合Swanlab进行作物检测
  • (22)activeMQ部署
  • 1小时极限速通MC局域网联机:PCL2 + Zerotier局域网联机方案
  • 一招搞定苹果安卓跨系统传输,文件大小再也不是问题
  • SQL 查询语句的顺序详解