刷题笔记 最少前缀操作问题 题解 | 豆包MarsCode AI刷题

15 阅读3分钟

问题描述

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

解题思路

题目要求通过对字符串S进行操作,使其变成字符串T的一个前缀。操作可以是修改S的某一个字符,或者删除S末尾的字符。我们的目标是计算出最少需要几次操作才能让S变成T的前缀。

解题步骤

我们的大致解题步骤就是,首先,我们需要初始化一个变量来记录操作次数。然后,我们遍历字符串S和T,直到其中一个字符串结束。在遍历过程中,如果S和T的对应字符不相同,我们就增加这个变量的值,表示需要进行一次修改操作。接着,如果S的长度大于T的前缀长度,我们还需要增加这个变量的值,表示需要删除多余的字符。最后,返回这个变量的值,即最少需要的操作次数。

算法步骤

初始化操作次数:

设置 operations = 0。

遍历字符串:

使用 for 循环遍历字符串 S 和 T,直到其中一个字符串结束。 在循环中,比较 S[i] 和 T[i]。如果字符不相同,增加 operations 的值。

处理多余字符:

如果 S 的长度大于 T 的前缀长度,增加 operations 的值,表示需要删除多余的字符。

返回结果:

返回 operations 的值。

题目总结

通过遍历字符串 S 和 T,比较对应字符并计算需要修改的字符数,以及处理 S 长度大于 T 前缀长度的情况,我们可以计算出最少需要的操作次数。这个思路确保了我们在最少的操作次数内将 S 变成 T 的前缀。

学习总结以及对新手入门学习方向提示

在这个题目中,我通过遍历字符串并比较对应字符,学会了如何计算最少需要的操作次数,来将一个字符串变成另一个字符串的前缀。这个过程中,我掌握了字符串的基本操作,如遍历、比较和获取长度,以及如何使用循环和条件判断来处理字符串。还学会了如何使用变量记录操作次数,并在适当的时候增加计数。通过这些学习和练习,我更好地理解和掌握字符串操作、循环和条件判断等编程基础知识,提升解决问题的能力。希望这些对大家有足够的帮助

代码

def solution(S: str, T: str) -> int:
    # 初始化操作次数
    operations = 0
    
    # 遍历字符串,直到其中一个字符串结束
    for i in range(min(len(S), len(T))):
        if S[i] != T[i]:
            operations += 1
    
    # 如果 S 的长度大于 T 的前缀长度,需要删除多余的字符
    if len(S) > len(T):
        operations += len(S) - len(T)
    
    return operations

if __name__ == '__main__':
    print(solution("aba", "abb") == 1)
    print(solution("abcd", "efg") == 4)
    print(solution("xyz", "xy") == 1)
    print(solution("hello", "helloworld") == 0)
    print(solution("same", "same") == 0)