原题链接:传送门
题意:给出了两个字符串s和t。在一次移动中,可以选择两个字符串中的任意一个并删除第一个(即最左侧)字符。移动后,字符串的长度减少1。如果字符串为空,则无法选择该字符串。
要使用最少的移动次数使两个给定的字符串相等。注意两个字符串可能等于空字符串。
求最少删除几个字符可使两字符串相等。
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int main(){
string a,b;
cin>>a>>b;
int len1 = a.length();
int len2 = b.length();
int num = 0;
for(int i=len1,j = len2;i>=0,j>=0;i--,j--){ //倒着看两字符串有几个相等的字符。就是要保留的字符。
if(a[i] == b[j]){
num += 2; //每有两个字符相等,num+2.
continue;
}
else break;
}
int res = len1+1 + len2+1 - num; //即删除的字符。
printf("%d\n",res);
return 0;
}