AT2162 题解

题目传送门

这题可以线性效率过,有位大神用哈希表虐橙题,太恶心厉害了,然而根本不需要。

我使用双指针做这题,同样是线性效率!

两个指针都是从零开始,分别指向两个字符串。

每一次,前缀字符串的那个指针都加一,直到超过范围才跳出。

当指针对应的字符相等时,才给后缀字符串指针加。

显然,这样就是在寻找重叠区域。

满分代码:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

int main()
{
	int len;
	string a, b;
	cin >> len >> a >> b;
	//以下便是重点代码。 
	int A = 0, B = 0, ans = len * 2;
	while (true)
	{
		if (A == len) break;
		if (a[A] == b[B]) B++, ans--;
		A++;
	}
	printf("%d\n", ans);  //勿忘祖传换行。
	return 0;
}

首发:2022-02-04 18:06:48

posted @ 2022-08-25 00:13  liangbowen  阅读(12)  评论(0编辑  收藏  举报