首页 > 编程语言 >编辑距离算法

编辑距离算法

时间:2024-03-29 11:44:56浏览次数:26  
标签:const string str2 str1 levenshteinDistance length 距离 编辑 算法

const levenshteinDistance = (str1: string, str2: string) => {
    const len1 = str1.length;
    const len2 = str2.length;

    const matrix: Array<number[]> = [];

    // 初始化第一行
    for (let i = 0; i <= len1; i++) {
        matrix[i] = [i];
    }

    // 初始化第一列
    for (let j = 0; j <= len2; j++) {
        matrix[0][j] = j;
    }

    // 填充矩阵
    for (let i = 1; i <= len1; i++) {
        for (let j = 1; j <= len2; j++) {
            const cost = str1[i - 1] === str2[j - 1] ? 0 : 1;
            matrix[i][j] = Math.min(
                matrix[i - 1][j] + 1, // 删除
                matrix[i][j - 1] + 1, // 插入
                matrix[i - 1][j - 1] + cost // 替换
            );
        }
    }

    return matrix[len1][len2];
}
export const similarity = (str1: string, str2: string) => {
    const distance = levenshteinDistance(str1, str2);
    const maxLength = Math.max(str1.length, str2.length);
    return 1 - distance / maxLength;
}

标签:const,string,str2,str1,levenshteinDistance,length,距离,编辑,算法
From: https://www.cnblogs.com/bitterteaer/p/18103490

相关文章

  • 安装TensorFlow和使用sublime编辑器
    确定要安装TensorFlow1.6后,查找对应版本,TensorFlow1.6与python3.6,python3.6与Anaconda3-5.2.0兼容一、安装TensorFlow1、第一步、安装合适的anaconda安装包。如系统类型是windows64位操作系统,双击Anaconda3-5.2.0-Windows-x86_64.exe。(要先下载到本地,尽量放在一个文件夹下)进......
  • 配置修改Vim编辑器中TAB键的缩进长度
    配置修改Vim编辑器中TAB键的缩进长度有时候在使用vim编辑器进行编辑时发现,tab键的缩进长度太大,造成代码阅读编辑不方便,可以按照以下步骤配置修改vim编辑器的tab键缩进。一、使用vim打开配置文件~/.vimrc。(如果该文件不存在可以自己新建一个)二、在文件的末尾添加新行,内容如下......
  • 基于DBO-CNN-BiLSTM数据回归预测(多输入单输出),蜣螂优化算法优化CNN-BiLSTM-附代码
    基于DBO-CNN-BiLSTM的数据回归预测是一种综合利用了深度学习中的多种技术的方法,包括卷积神经网络(CNN)、双向长短期记忆网络(BiLSTM)和注意力机制(Attention)。蜣螂优化算法用于优化CNN-BiLSTM模型的参数。以下是基于DBO-CNN-BiLSTM的数据回归预测的原理:CNN(卷积神经网络):CNN是一......
  • Java实现的表达式求值算法(包括加减乘除以及括号运算)
    packagecom.example.demo.java;importcom.greenpineyu.fel.FelEngine;importcom.greenpineyu.fel.FelEngineImpl;importjava.math.BigDecimal;importjava.util.HashMap;importjava.util.Map;importjava.util.Stack;importjava.util.regex.Matcher;impor......
  • 10天【代码随想录算法训练营34期】 第五章 栈与队列part01(● 232.用栈实现队列 ● 22
    232.用栈实现队列classMyQueue:def__init__(self):self.queue=[]self.size=0defpush(self,x:int)->None:self.queue.append(x)self.size+=1defpop(self)->int:self.size-=1retur......
  • 中文地址智能分词算法-Java版
    addresstool用于处理中文地址的分词和匹配,采用NLP分词算法进行中文地址分词,在中文地址分词基础上对垃圾地址进行识别,过滤,标记等。根据杂乱的业务地址自动化生成标准中文地址库,并支持随机业务地址关联到标准地址操作,实测速度达到25000条/每秒今天我们测试一下addresstool的地址分......
  • 商密测评必知:国密算法的重要性与应用
    国密算法是指由中国国家密码管理局发布的密码算法标准,旨在保障国家信息安全。目前,国家密码管理局已发布了一系列国产商用密码标准算法,包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9以及祖冲之密码算法(ZUC)等。通过在金融、电子政务及安防等领域广泛应用国密算法,在对敏感数据进行机密性......
  • 排序算法 - 堆排序
    文章目录目录文章目录前言1.堆排序原理2.堆排序实现 总结前言大家好,今天给大家介绍一下常见排序算法中的堆排序(填坑)1.堆排序原理堆排序是一种基于二叉堆数据结构的排序算法,它利用堆的性质进行排序。堆是一种完全二叉树,分为最大堆和最小堆两种类型。在......
  • 【智能算法改进】混沌映射策略--一网打尽
    目录1.引言2.混沌映射3.分布特征4.混沌映射函数调用5.改进智能算法1.引言基本种群初始化是在整个空间内随机分布,具有较高的随机性和分布不均匀性,会导致种群多样性缺乏,搜索效率低等问题。许多学者利用混沌映射机制来增加种群的多样性,以改善算法的性能,其非线性特性......
  • 程序员常用的几种算法
    程序员常用的几种算法:排序算法:如快速排序、归并排序、冒泡排序等。这些算法用于对数据进行排序,以便于后续的搜索、查找等操作。搜索算法:如线性搜索、二分搜索等。这些算法用于在数据结构中查找特定的元素。图算法:如深度优先搜索(DFS)、广度优先搜索(BFS)、Dijkstra算法......