HDU-1238-Substrings(求公共子串)

博主链接

题目链接

题意:

找出所有字符串***同拥有的一个子串,该子串(正、逆字符)是任何一个母串的子串,求该子串的最长长度。

题解:

利用string库里的find函数+STL中的reverse反转函数。先找出最短的母串,即该符合要求的子串肯定在这个母串中,即在从长到短,从最短母串中取子串,在子串正反去查看是否符合要求。

代码:

#include<stdio.h>
#include<bits/stdc++.h>
#define met(a) memset(a,0,sizeof(a))
#define fup(i,a,n,b) for(int i=a;i<n;i+=b)
#define fow(j,a,n,b) for(int j=a;j>0;j-=b)
#define MOD(x) (x)%mod
using namespace std;
const int mod = 1e9 + 7;
typedef long long ll;
string s[120];
int main() {
	int t;
	scanf("%d", &t);
	while ( t--) {
		int n,sub;
		scanf("%d", &n);
		int len = 1000;
		for (int i = 0; i < n; i++) {
			cin >> s[i];
			if (s[i].size() < len)len = s[i].size(), sub = i;
		}
		int maxn = 0;
		for (int i = s[sub].size(); i > 0; i--) {
			for (int j = 0; j <= s[sub].size(); j++) {
				string s1, s2;
				s1 = s[sub].substr(j, i);
				s2 = s1;
				reverse(s2.begin(), s2.end());   //反转
				int k;
				for (k = 0; k < n; k++) {
					if (s[k].find(s1, 0) == -1 && s[k].find(s2, 0) == -1)break;
					
				}
				if (k == n && maxn < s1.size())maxn = s1.size();
			}
		}
		printf("%d\n", maxn);
	}
	return 0;
}
全部评论

相关推荐

05-14 16:55
广州大学 Java
面试情况25届双非本科,有&nbsp;ACM&nbsp;竞赛经历,两段实习(小厂&nbsp;+&nbsp;独角兽)。以下为2024年11月到次年5月的春招及其补录面试情况,若对个人秋招经历感兴趣,可查看另一篇置顶文章。通过某区级供水国企汇丰科技:线上行为测评&nbsp;→&nbsp;Coding&nbsp;测试&nbsp;→&nbsp;线下技术&nbsp;&amp;&nbsp;HR&nbsp;面东方财富:一、二轮线上面,三轮线下技术面招银科技:一轮线上技术,二轮、三轮线下技术和HR元戎启行:三轮技术面&nbsp;+&nbsp;HR&nbsp;面,一共四面面试挂拼多多:客户端,三轮技术面挂,手撕没撕出来4399:一轮技术面挂微派:一轮技术面挂,手撕没撕出来以下是个人无意向故提前主动终止流程,以免影响其他候选人广州农商银行:线下笔试,一轮面试...
isjsns:同双非本,最后的总结那块挺赞同的,我们计院的就业数据也就那样,年包二十到四十万的人也有,但少之又少,周围有认识的地信和电子的也有二到四十万的,找的还不错的包括我基本都是春招才找到的,个人是感觉春招机会挺多的,也可能是像楼主一样年初又找了个实习加技术又沉淀了一波的原因,本来秋招结束都想摆了,最后还是熬出来了大家别放弃啊,双非本也有翻身的机会的
点赞 评论 收藏
分享
劝退式:感觉有人回才是不正常的
点赞 评论 收藏
分享
用户64975461947315:这不很正常吗,2个月开实习证明,这个薪资也还算合理,深圳Java好多150不包吃不包住呢,而且也提前和你说了没有转正机会,现在贼多牛马公司骗你说毕业转正,你辛辛苦苦干了半年拿到毕业证,后面和你说没hc了😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务