编辑代码

// 字符串编辑距离
function similar (string1, string2) {
    if (!string1 || !string2) return 0
    const length1 = string1.length
    const length2 = string2.length
    const length = length1 > length2 ? length1 : length2

    const matrix = []
    
    for (let i = 0; i <= length1; i++) {
        matrix[i] = []
        matrix[i][0] = i
    }
    for (let i = 0; i <= length2; i++) {
        matrix[0][i] = i
    }
    for (let i = 1; i <= length1; i++) {
        const char1 = string1.charAt(i - 1)
        for (let j = 1; j <= length2; j++) {
            const char2 = string2.charAt(j - 1)
            const cost = char1 === char2 ? 0 : 1
            const top = matrix[i][j - 1] + 1
            const left = matrix[i - 1][j] + 1
            const angle = matrix[i - 1][j - 1] + cost
            matrix[i][j] = Math.min(left, top, angle)
        }
    }
    console.log(matrix)
    let result = (1 - matrix[length1][length2] / length)
    return result
}

const a = similar('把“冰”字去掉两点,就成了“水”', '把冰去掉两点')
console.log(a)