HJ52 計(jì)算字符串的編輯距離

https://www.nowcoder.com/practice/3959837097c7413a961a135d7104c314

描述

Levenshtein 距離,又稱編輯距離,指的是兩個(gè)字符串之間,由一個(gè)轉(zhuǎn)換成另一個(gè)所需的最少編輯操作次數(shù)。許可的編輯操作包括將一個(gè)字符替換成另一個(gè)字符,插入一個(gè)字符,刪除一個(gè)字符。編輯距離的算法是首先由俄國(guó)科學(xué)家Levenshtein提出的,故又叫Levenshtein Distance。
例如:
字符串A:abcdefg
字符串B: abcdef

通過(guò)增加或是刪掉字符”g”的方式達(dá)到目的。這兩種方案都需要一次操作。把這個(gè)操作所需要的次數(shù)定義為兩個(gè)字符串的距離。
要求:
給定任意兩個(gè)字符串,寫(xiě)出一個(gè)算法計(jì)算它們的編輯距離。
本題含有多組輸入數(shù)據(jù)。

輸入描述:

每組用例一共2行,為輸入的兩個(gè)字符串

輸出描述:

每組用例輸出一行,代表字符串的距離

示例1

輸入:
abcdefg
abcdef
輸出:
1

js實(shí)現(xiàn)

參考:

const rl = require("readline").createInterface({ input: process.stdin });
let input_data=[]
rl.on('line',function(input){
    input_data.push(input)
    if(input_data.length===2){
        let [s1,s2]=input_data
        let dp=new Array(s1.length+1)
        for(let i=0;i<=s1.length;i++){
            dp[i]=new Array(s2.length+1)
            for(let j=0;j<=s2.length;j++){
                if(i===0){
                    dp[i][j]=j
                }else if(j===0){
                    dp[i][j]=i
                }else{
                    if(s1[i-1]===s2[j-1]){
                        dp[i][j]=dp[i-1][j-1]
                    }else{
                        dp[i][j]=Math.min(dp[i-1][j-1],dp[i-1][j],dp[i][j-1])+1
                    }
                }
            }
        }
        console.log(dp[s1.length][s2.length])
    }
   
})
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容