在过了不知道多少年后
$\Huge\color{black}{我又来氵题解了}$
(此处应该有掌声
本文章将包含致死量的动图,欢迎使用
题目
我:
我:
我:
刚去完西安,西安科技大学题目这么氵???
好的不扯了
这道题呢,嗯,《双指针》,啊对吧。
当然还有其它办法
比如…
可是那人懒得没写注释啊
别揍我啊啊啊
对比一下方法啊,就是小迷妹,用的是char
,只有两层循环。
写之前看了一眼,《那必须都不一样啊》用三层循环好了
意思大致是搞i
和j
两层循环,然后将他俩之间的字符加起来存到另一个字符串里,然后用find
函数直接快速寻找一样的,接着打擂台,找出最大的。
总的来说,《适合新手》,绝对《无误导》,绝对《良心》
Code 1
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int ans_1 = 0;
string s1, s2, ans_2 = "";
cin >> s1 >> s2;
for (int i = 0; i < s1.size(); i ++ ) {
for (int j = i ; j < s1.size(); j ++) {
string s3 = "";
for (int k = i; k <= j; k ++) {
s3 += s1[k];
}
if (s2.find(s3) != -1 and ans_1 <= s3.size()) {
ans_1 = s3.size();
ans_2 = s3;
}
}
}
cout << ans_1 << endl << ans_2 << endl;
}
//学废了就抠波666
如果s1的长度为1,不就进不了循环了吗?
题解怎么还刷收藏量的(《反正不是我弄的》
行,高考要发挥失常凭这题我也能去西电了qaq
(致----------王*毁兄
《6》
这题解做的有水平
666
你还怪幽默
这个题解不对吧
是的,已修改
循环不能去头掐尾
这个题目后来加了一组数据
是这个循环的范围有问题
请教一下这里面第二个条件是怎么想到的
我直接说一下整个程序的思路吧
首先输入
s1
和s2
没毛病接下来有个
i
和j
的循环(双指针),把所有可能的s1
子序列全部列举出来,再开一个循环,将子序列存入s3
,然后用find
函数查找s2
里面是否包括s3
,也就是那个子序列。s2.find(s3) != -1
指的是有没有找到,如果没有找到,find
会返回-1
,否则返回需要查找的子序列的位置。ans_1
存储的是最终答案子序列的长度。只有找到更长的相同子序列,才要重新存储子序列的信息,将子序列存入ans_2
。最后循环结束,直接输出ans_1
以及ans_2
即可。首先表示感谢
但我是想问如何想到不是作用,这个作用在我模拟程序后也发现了。
如果你是自然而然很顺畅的想到这个条件的话,那应该是我题做的不多。
没看懂
不好意没看到哈
首先输入
s1
和s2
没毛病接下来有个
i
和j
的循环(双指针),把所有可能的s1
子序列全部列举出来,再开一个循环,将子序列存入s3
,然后用find
函数查找s2
里面是否包括s3
,也就是那个子序列。s2.find(s3) != -1
指的是有没有找到,如果没有找到,find
会返回-1
,否则返回需要查找的子序列的位置。ans_1
存储的是最终答案子序列的长度。只有找到更长的相同子序列,才要重新存储子序列的信息,将子序列存入ans_2
。最后循环结束,直接输出ans_1
以及ans_2
即可。。
:)