vue3+ts實現計算兩個字符串的相似度

在TypeScript中,可以使用Levenshtein萊文斯坦距離算法來精確匹配兩個字符串的相似度百分比。Levenshtein距離是指兩個字符串之間,由一個轉換成另一個所需的最少編輯操作次數,這里的編輯操作包括插入、刪除、替換。

/*** Levenshtein距離算法來精確匹配兩個字符串的相似度* Levenshtein距離是指兩個字符串之間,由一個轉換成另一個所需的最少編輯操作次數,這里的編輯操作包括插入、刪除、替換*/
function levenshteinDistance(str1: string, str2: string): number {let m = str1.length;let n = str2.length;let dp: number[][] = new Array(m + 1).fill(0).map(() => new Array(n + 1).fill(0));for (let i = 0; i <= m; i++) {dp[i][0] = i;}for (let j = 0; j <= n; j++) {dp[0][j] = j;}for (let i = 1; i <= m; i++) {for (let j = 1; j <= n; j++) {if (str1[i - 1] === str2[j - 1]) {dp[i][j] = dp[i - 1][j - 1];} else {dp[i][j] = 1 + Math.min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]);}}}return dp[m][n];
}
//根據兩字符串的最大長度和計算得到的Levenshtein距離來計算相似度百分比
function calculateSimilarityPercentage(str1: string, str2: string): number {const maxLength = Math.max(str1.length, str2.length);const distance = levenshteinDistance(str1, str2);return 1 - distance / maxLength;
}

調用:

const queryAndSort = (word: string, targetWord: string) => {return calculateSimilarityPercentage(word, targetWord);
};
console.log(queryAndSort1("byte_id", "id"), "------------"); // 0.2857142857142857 
console.log(queryAndSort1("byte_id", "byte_id"), "------------");// 1

通過這種方式實現的字符串相似度是比較準確的。無論是匹配中文、英文、還是中英結合的、或者正序倒序的都可以正確匹配出來~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/37696.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/37696.shtml
英文地址,請注明出處:http://en.pswp.cn/web/37696.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux Static calls機制

文章目錄 前言一、簡介二、Background: indirect calls, Spectre, and retpolines2.1 Indirect calls2.2 Spectre (v2)2.3 RetpolinesConsequences 2.4 Static callsHow it works 三、其他參考資料 前言 Linux內核5.10內核版本引入新特性&#xff1a;Static calls。 Static c…

JAVA各版本-安裝教程

目錄 Java安裝包下載 Java安裝步驟 Java環境配置 Java安裝包下載 到Oracle官網下載自己需要的版本 Oracle Java下載&#xff1a;Java Archive | Oracle Hong Kong SAR, PRC 下拉選擇自己需要的版本&#xff08;本教程以Windows環境下&#xff0c;JAVA11為例&#xff09; 注…

C++初學者指南-3.自定義類型(第一部分)-指針

C初學者指南-3.自定義類型(第一部分)-指針 文章目錄 C初學者指南-3.自定義類型(第一部分)-指針1.為什么我們需要它們&#xff1f;2.T 類型的對象指針原始指針&#xff1a;T * 智能指針(C11) 3.操作符地址操作符 &解引用運算符 *成員訪問操作符 ->語法重定向 4.nullptr (…

【Linux】用戶管理

創建與刪除 adduser adduser 是一個交互式命令&#xff0c;用于創建新用戶并設置初始環境。 sudo adduser 用戶名示例&#xff1a; sudo adduser newuseruseradd useradd 是一個非交互式命令&#xff0c;允許你通過選項指定用戶的屬性。 sudo useradd [選項] 用戶名常見選…

SCADA系統對于工業生產的意義!

關鍵字:LP-SCADA系統, 傳感器可視化, 設備可視化, 獨立SPC系統, 智能儀表系統,SPC可視化,獨立SPC系統 SCADA系統在智能制造中扮演著至關重要的角色&#xff0c;它通過集成和自動化工廠車間的各種過程&#xff0c;提高了生產效率和產品質量&#xff0c;降低了成本&#xff0c;并…

【AI繪畫 ComfyUI】全新整合包來襲!一鍵安裝 即開即用,超好用的工作流形式的AI繪畫工具!

大家好&#xff0c;我是畫畫的小強 請在看這篇文章的人注意&#xff0c;本文章介紹的Comfy UI整合包是一個節點式的工作&#xff0c;流式的AI繪畫界面&#xff0c;并不適合新手使用。 如果你在找的是Web UI, 請前往我之前發布一篇的文章AI繪畫『Stable Diffusion』面向小白的…

【高中數學/基本不等式】設a,b>0.a+b=5,則 根號下(a+1)+根號下(b+3) 的最大值為?(2015重慶卷)

【問題】 設a,b>0.ab5,則根號下(a1)根號下(b3)的最大值為&#xff1f; 【解答】 解法一&#xff1a; 因雙根號計算不便&#xff0c;故采用平方后簡化之。 原式的平方a12倍根號下((a1)(b3))b3 ab42倍根號下((a1)(b3)) 因為ab5 a1b31359 9(a1)(b3)>2倍根號下((a1)…

【小貪】項目實戰——Zero-shot根據文字提示分割出圖片目標掩碼

目標描述 給定RGB視頻或圖片&#xff0c;目標是分割出圖像中的指定目標掩碼。我們需要復現兩個Zero-shot的開源項目&#xff0c;分別為IDEA研究院的GroundingDINO和Facebook的SAM。首先使用目標檢測方法GroundingDINO&#xff0c;輸入想檢測目標的文字提示&#xff0c;可以獲得…

uniapp中如何進行微信小程序的分包

思路&#xff1a;在uniapp中對微信小程序進行分包&#xff0c;和原生微信小程序進行分包的操作基本上沒區別&#xff0c;主要就是在pages.json中進行配置。 如圖&#xff0c;我新增了一個包diver-page 此時需要在pages.json中的subPackages數組中新增一項 root代表這個包的根…

用好華為小助手,生活總能快人一步

嘿&#xff01;朋友們&#xff01;你們有沒有想過&#xff0c;如果身邊有一個小助手&#xff0c;他不僅聰明伶俐&#xff0c;還能在生活的方方面面給予你最貼心的關懷和幫助&#xff0c;讓我們的日常生活變得更加方便和快捷&#xff0c;那該有多好&#xff01;沒錯&#xff0c;…

【云原生】Kubernetes資源配額+HPA+節點選擇器+親和性+污點

Kubernetes高級功能 文章目錄 Kubernetes高級功能一、資源配額1.1、什么是資源配額1.2、資源配額應用1.2.1、針對Namespace設置資源配額1.2.2、針對Pod設置資源配額 二、HorizontalPodAutoscaler&#xff08;HPA&#xff09;2.1、什么是HorizontalPodAutoscaler2.2、Horizontal…

談談創意設計中的AI、AGI、AIGC

在當今的數字化時代&#xff0c;創意設計領域正經歷著前所未有的變革。隨著人工智能&#xff08;AI&#xff09;、通用人工智能&#xff08;AGI&#xff09;以及人工智能生成內容&#xff08;AIGC&#xff09;的迅猛發展&#xff0c;設計師們的工作方式和創作手段都發生了深刻的…

Spring Boot中的緩存配置與優化

Spring Boot中的緩存配置與優化 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將探討在Spring Boot應用中如何配置和優化緩存&#xff0c;以提升系統的…

UML形式化建模期末復習筆記

本文檔為xmind導出&#xff0c;可能存在缺少圖片等問題&#xff0c;建議下載思維導圖查看完整內容 鏈接: https://pan.baidu.com/s/17s-utC2C6Qg0tFp61Kw0ZQ?pwduq64 提取碼: uq64 概述 UML: Unified Modeling Language 統一建模語言 建模 定義 把不太理解的東西和一些已經較…

隔離級別是如何實現的?

在數據庫管理系統中&#xff0c;隔離級別&#xff08;Isolation Level&#xff09;是用來定義事務在執行過程中可以看到其他事務執行中的操作的一個設置。這主要用于控制事務之間的并發性和數據一致性。SQL標準定義了四種隔離級別&#xff0c;每種級別都以不同的方式平衡了性能…

Swift 中的 StoreKit 測試

文章目錄 前言創建一個 StoreKit Demo使用 SKTestSessionaskToBuyEnabled 屬性總結前言 StoreKit 框架的第二次迭代是我在過去幾年中應用程序中最重大的變化。最近版本的 StoreKit 框架已完全采用了 Swift 語言特性,如 async 和 await。本篇內容我們將討論 StoreKitTest 框架…

【揭秘】嘴尚絕鹵味健康新風尚,讓你吃得美味又健康!

在快節奏的現代生活中&#xff0c;美食不僅是味蕾的享受&#xff0c;更是健康生活的追求。今天&#xff0c;我們要聊的就是備受食客們青睞的“嘴尚絕鹵味”——如何在享受美味的同時&#xff0c;也能兼顧健康飲食的理念。 一、鹵味文化&#xff0c;源遠流長 鹵味&#xff0c;作…

Redis緩存管理機制

在當今快節奏的數字世界中&#xff0c;性能優化對于提供無縫的用戶體驗至關重要。緩存在提高應用程序性能方面發揮著至關重要的作用&#xff0c;它通過將經常使用或處理的數據存儲在臨時高速存儲中來減少數據庫負載并縮短響應時間&#xff0c;從而減少系統的延遲。Redis 是一種…

navicat Lite 版

navicat Lite 版&#xff1a; Navicat 出了一個 Navicat Premium 的Lite版。 官方現在鏈接&#xff1a;https://www.navicat.com.cn/download/navicat-premium-lite#windows 從官網可以看到現在能夠下載最新版本 17&#xff0c;支持各種平臺

[vue2/vue3] 詳細剖析watch、computed、watchEffect的區別,原理解讀

前言&#xff1a;哈嘍&#xff0c;大家好&#xff0c;我是前端菜鳥的自我修養&#xff01;今天給大家分享【深入剖析watch、computed、watchEffect的區別】&#xff0c;并提供具體代碼幫助大家深入理解&#xff0c;徹底掌握&#xff01;原創不易&#xff0c;如果能幫助到帶大家…