• 动态规划-编辑距离


    设A和 B是两个 是两个 英文 字符串 (仅包括英文字母,严格区分大小写 )。为 了将 A变换为 B,可以采用如下三种字符操作: ,可以采用如下三种字符操作: ,可以采用如下三种字符操作: ①删除一个字符; ②插入一个字 符; ③将一个字符 改为另外。A变换为字符串 变换为字符串 B所需的最小字 符操作数 (限以上三种操作 )称为 A到 B的编辑距离,记为 的编辑距离,记为 的编辑距离,记为 d(A,B) 。计算两个字符串的辑距离 编写程序,计算两个字符串的辑距离 d(A, d(A, B) 。

    package test;
    
    import java.util.Scanner;
    
    public class test1 {
        public static int editDistance(String a, String b) {
            if (a == null || b == null) {
                return 0;
            }
            int[][] matrix = new int[a.length() + 1][b.length() + 1];
            for (int i = 0; i < a.length() + 1; i++) {
                for (int j = 0; j < b.length() + 1; j++) {
                    if (i == 0) {
                        matrix[i][j] = j;
                    } else if (j == 0) {
                        matrix[i][j] = i;
                    } else {
                        if (a.charAt(i - 1) == b.charAt(j - 1)) {
                            matrix[i][j] = matrix[i - 1][j - 1];
                        } else {
                            matrix[i][j] = 1 + Math.min(Math.min(matrix[i - 1][j], matrix[i][j - 1]), matrix[i - 1][j - 1]);
                        }
                    }
                }
            }
            return matrix[a.length()][b.length()];
        }
         
        public static void main(String arg[])
        {
            Scanner input=new Scanner(System.in);
            String s1=input.nextLine();
            String s2=input.nextLine();
            int res=editDistance(s1,s2);
            System.out.print("d("+s1+","+s2+")="+res);        
        }
    }
  • 相关阅读:
    制衡技术的新蓝海
    制衡技术,从Adblock所想到的
    centos6中安装新版 Elasticsearch 7.x
    nrm 安装与npm镜像切换
    james2.3 配置收件 之 MariaDB数据库配置
    手动搭建apache james邮件服务器,实现邮件功能
    James 如何作为服务在后台启动
    安装最新版RabbitMQ v3.7.13 以及基本配置
    mac 下 通过 brew 安装 MariaDB
    Mac 上安装maven
  • 原文地址:https://www.cnblogs.com/ljs-666/p/8035144.html
Copyright © 2020-2023  润新知