问题描述
小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
#include <iostream>
#include <string>
using namespace std;
int solution(string S, string T) {
int res = 0 ;
int i = 0 ;
for(i = 0 ; i < S.length() ; i ++ )
{
if(i >T.length() - 1 )
{
res+=S.length()-T.length();
break;
}
if(S[i] != T[i])
{
res ++;
}
}
return res;
}
int main() {
cout << (solution("aba", "abb") == 1) << endl;
cout << (solution("abcd", "efg") == 4) << endl;
cout << (solution("xyz", "xy") == 1) << endl;
cout << (solution("hello", "helloworld") == 0) << endl;
cout << (solution("same", "same") == 0) << endl;
return 0;
}
思路
只需对S字符串进行操作, 当前下标i如果S【i】和T【i】不相同,则增加一个操作,如果当前下标i已经大于t的长度,就对结果加上两者的差,然后输出答案