这题可以线性效率过,有位大神用哈希表虐橙题,太恶心厉害了,然而根本不需要。
我使用双指针做这题,同样是线性效率!
两个指针都是从零开始,分别指向两个字符串。
每一次,前缀字符串的那个指针都加一,直到超过范围才跳出。
当指针对应的字符相等时,才给后缀字符串指针加。
显然,这样就是在寻找重叠区域。
满分代码:
#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
标签:int,题解,AT2162,len,ans,字符串,include,指针 From: https://www.cnblogs.com/liangbowen/p/16622796.html