最少前缀操作 | 豆包MarsCode AI刷题

108 阅读1分钟

问题描述

小U和小R有两个字符串,分别是SS和TT,现在小U需要通过对SS进行若干次操作,使其变成TT的一个前缀。操作可以是修改SS的某一个字符,或者删除SS末尾的字符。现在你需要帮助小U计算出,最少需要多少次操作才能让SS变成TT的前缀。


测试样例

样例1:

输入:S = "aba", T = "abb"
输出:1

样例2:

输入:S = "abcd", T = "efg"
输出:4

样例3:

输入:S = "xyz", T = "xy"
输出:1

样例4:

输入:S = "hello", T = "helloworld"
输出:0

样例5:

输入:S = "same", T = "same"
输出:0

js解法一: 参考来自https://blog.csdn.net/m0_73302939/article/details/143974262

function solution(S, T) {
    let count = 0 ;
    let lenS = S.length;
    let lenT = T.length;
    if(!lenT || !lenS){
        return 0;
    }
    // 遍历 S 和 T 的每个字符
    for(let i = 0;i<lenS;i++){
        if(i<lenT){
        // 如果字符不同,累加修改操作
            if(S[i]!=T[i]){
                count++;
            }
        }else{
        // 如果 S 的长度超出 T,需要删除剩余部分
           count +=lenS - lenT
           break; 
        }
    }
    return count;
}