最少前缀操作问题
题目描述:
小U和小R有两个字符串,分别是S和T,现在小U需要通过对S进行若干次操作,使其变成T的一个前缀。操作可以是修改S的某一个字符,或者删除S末尾的字符。现在你需要帮助小U计算出,最少需要多少次操作才能让S变成T*的前缀。
测试样例
样例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
💡Analysis
-
对于字符串
S,只能改,或者删除最后一个字符,那么对于s = abcd, T = 'bcd'前三位改,后一位删除,输出则为:4 -
分析情况
-
`S == T => 相等0
-
len(S) <= len(T) => 遍历S -
len(S) > len(T) => 遍历T
-
代码如下:
def solution(S: str, T: str) -> int:
if S == T:
return 0
else:
cc = 0
len_s, len_t = len(S), len(T)
for i in range(min(len_s, len_t)):
if S[i] != T[i]:
cc += 1
if (len(S) - len(T)) >= 0:
cc += len(S) - len(T)
return cc
💡💡时空复杂度
- 时间复杂度:
- 空间复杂度: 只算def函数内定义的
Ending ...