7/31下午暑假训练1的题解(Codeforces Round #496 (Div. 3))【CF1005B】
题意:给两个字符串,从左端删除若干字符使得两个串相等,输出删除字符个数总和,第一反应是类似于洛谷上的那个字符串匹配的动态规划题,但是老师说比赛都是水题,应该没那么麻烦。
后来想了想观察可得,右侧是一样的,从右向左推导就可以了,求出相同的个数,用总的减去相同的个数就是答案。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a,b;
while(cin>>a>>b)
{
int len_a = a.length();
int len_b = b.length();
int cnt = 0;
for(int i = len_a-1, j = len_b-1; i >= 0&&j >= 0; i--, j--)
{
if(a[i] == b[j])
cnt += 2;
else break;
}
cout << len_a+len_b-cnt << endl;
}
}