2020牛客寒假算法基础集训营5.A——模板【简单计算】

题目传送门


题目描述

牛牛,牛可乐和牛能组成了一只队伍参加ACM系列赛事,他们起了一个优雅的队名叫~“牛牛战队”。
牛牛战队在没有比赛的时候,会把各种板子放在密码柜里,防止弄丢。这一个密码由整个队伍掌管。其中牛牛和牛能有两个密钥,各自有一个仅由大写字母构成的字符串。牛可乐则掌握着解密方法。一天,你用一瓶可乐贿赂牛可乐,得到了解密的办法:
牛可乐将试图通过以下操作用尽可能少的步骤把一个密钥转换为另一个:

  • 将其中任意一个字母替换为另一个
  • 把最后一个字母删除
  • 在尾部添加一个字母

得到的转化步数就是最后的密码。

一天,你和他们队员一起聚餐,你用可乐把他们灌倒了,从牛牛和牛能口中套出了两个密钥。你要趁他们醒之前拿到模板并复印一份再放回去。你能尽快的算出密码吗?


输入描述:

输入数据共3行,第一行包括两个整数 n , m ( 1 n , m 1 0 5 ) n,m(1 \leq n,m \leq 10^5) ,表示两个密钥的长度

第二行包含一个长度为n的字符串 s 1 s_1 ,表示第一个密钥。

第三行包含一个长度为m的字符串 s 2 s_2 ,表示第二个密钥。


输出描述:

在一行内输出一个整数,表示密码。


输入

4 3
WXYZ
WXY


输出

1


题解

  • 对于两个字符串长度,如果分别为 i , j ( i < = j ) i,j(i<=j)
  • 那么 [ 0 , i ] [0,i] 这个范围内不同的数量就是需要替换操作的数量
  • 对于 [ i + 1 , j ] [i+1,j] 这个范围多出来的数量就是需要减去操作的数量
  • 统计一下即可

AC-Code

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

const int maxn = 1e5 + 7;

int main() {
	int n, m;	while (cin >> n >> m) {
		string s1, s2;	cin >> s1 >> s2;
		ll cnt = abs((int)s1.length() - (int)s2.length());
		for (int i = 0; i < s1.length() && i < s2.length(); ++i) {
			if (s1[i] != s2[i])	++cnt;
		}
		cout << cnt << endl;
	}
	return 0;
}
发布了179 篇原创文章 · 获赞 109 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Q_1849805767/article/details/104299509