Substrings(hdu1238)字符串匹配
Substrings
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 7205 Accepted Submission(s):
3255
alphabetic characters, find the largest string X, such that either X, or its
inverse can be found as a substring of any of the given strings.
integer t (1 <= t <= 10), the number of test cases, followed by the input
data for each test case. The first line of each test case contains a single
integer n (1 <= n <= 100), the number of given strings, followed by n
lines, each representing one string of minimum length 1 and maximum length 100.
There is no extra white space before and after a string.
length of the largest string found.
这个找字串的问题,题目大概意思就是找出所有字符串中共同拥有的一个子串,
该子串(正、逆字符)是任何一个母串的子串,求该子串的最长长度。
想到用STRING里的成员函数和STL的reverse反转函数,
思路:
先找出最短的母串,即该符合要求的子串肯定在这个母串中,即在从长到短
从最短母串中取子串,在子串正反去查看是否符合要求。
说实话今天又学到了一些知识,我表示这C++的很多函数真shi 强大啊。
ps:http://acm.hdu.edu.cn/showproblem.php?pid=1238
#include<iostream>
#include<string>
#include<algorithm>//STL reverse函数的头文件,reverse反转函数,
using namespace std;
int main()
{
int cas,len,sub,maxn;
int n,k,i,j;
string s[];
cin>>cas;
while(cas--)
{
cin>>n;
len=;
sub=;
for(i=; i<n; i++)
{
cin>>s[i];
if(len>s[i].size())//找最小 的母串
{
len=s[i].size();
sub=i;
}
}
maxn=;
for(i=s[sub].size(); i>; i--) //从最小的母串开始从长到短找子串,
{
for(j=; j<s[sub].size()-i+; j++) //长度为i的子串在母串中找
{
string s1,s2;//s1为子串正 ,s2为子串反
s1=s[sub].substr(j,i);//去j开始i长度是字符
s2=s1;
reverse(s2.begin(),s2.end());//反串
for( k=; k<n; k++)
{
if(s[k].find(s1,)==-&&s[k].find(s2,)==-) //当正反子串在母串中都未发现时即跳出
break; }
if(k==n&&maxn<s1.size())
maxn=s1.size(); } }
cout<<maxn<<endl;
}
return ;
}
Substrings(hdu1238)字符串匹配的更多相关文章
- bitset 的妙用:乱搞字符串匹配
最近碰到了几次 bitset 乱搞字符串匹配的情况,故写文以记之. 1. 算法简介 核心思想:假设文本串为 \(s\),则对字符集中的每一个字符 \(c\) 开一个大小为 \(|s|\) 的 bits ...
- 字符串匹配的KMP算法
~~~摘录 来源:阮一峰~~~ 字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串”BBC ABCDAB ABCDABCDABDE”,我想知道,里面是否包含另一个字符串”ABCDABD”? 许 ...
- {Reship}{KMP字符串匹配}
关于KMP字符串匹配的介绍和归纳,作者的思路非常清晰,推荐看一下 http://blog.csdn.net/v_july_v/article/details/7041827
- 字符串匹配(hash算法)
hash函数对大家来说不陌生吧 ? 而这次我们就用hash函数来实现字符串匹配. 首先我们会想一下二进制数. 对于任意一个二进制数,我们将它化为10进制的数的方法如下(以二进制数1101101为例): ...
- 【C++实现python字符串函数库】二:字符串匹配函数startswith与endswith
[C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...
- sdut 2125串结构练习--字符串匹配【两种KMP算法】
串结构练习——字符串匹配 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目链接:http://acm.sdut.edu.cn/sduto ...
- C语言字符串匹配函数
C语言字符串匹配函数,保存有需要时可以用: #include <stdio.h> #include <stdlib.h> #include <string.h> # ...
- 字符串匹配--Karp-Rabin算法
主要特征 1.使用hash函数 2.预处理阶段时间复杂度O(m),常量空间 3.查找阶段时间复杂度O(mn) 4.期望运行时间:O(n+m) 本文地址:http://www.cnblogs.com/a ...
- 字符串匹配的KMP算法详解及C#实现
字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD" ...
- zstu.4194: 字符串匹配(kmp入门题&& 心得)
4194: 字符串匹配 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 206 Solved: 78 Description 给你两个字符串A,B,请 ...
随机推荐
- 网络流——最大流Dinic算法
前言 突然发现到了新的一年什么东西好像就都不会了凉凉 算法步骤 建残量网络图 在残量网络图上跑增广路 重复1直到没有增广路(注意一个残量网络图要尽量把价值都用完,不然会浪费建图的时间) 代码实现 #i ...
- 使用wget命令爬取整站
快速上手(整个bootstrap网页全被你抓取下来了~_~) wget -c -r -npH -k -nv http://www.baidu.com 参数说明 -c:断点续传 -r:递归下载 -np: ...
- C++ 设置Java 环境变量完整的例子
#include <stdio.h> #include <stdlib.h> #include <windows.h> #include <iostream& ...
- Java Listener中Spring接口注入的使用
在项目中使用Spring通常使用他的依赖注入可以很好的处理,接口与实现类之间的耦合性,但是通常的应用场景中都是Service层和DAO层,或者web层的话, 也是与Strust2来整合,那么如何在Li ...
- SpringCloud服务注册与服务发现之Eureka
Eureka是SpringCloud Netflix的子模块之一,用于云端的服务发现,服务定位,实现云端中间层服务发现和故障转移.服务注册与发现对于微服务系统来说十分的重要,有了服务注册与发现,就省去 ...
- spring mvc 使用kaptcha配置生成验证码实例
SpringMVC整合kaptcha(验证码功能) 一.依赖 <dependency> <groupId>com.github.penggle</groupId> ...
- C++ Enum 转 Lua Table工具
C++ Enum转Lua Table工具 观察C++ Enum结构 总结结构 enum GameMessage { //******* ///****************** GM_GAMESER ...
- 01-01java概述 doc命令、jdk\jre下载安装、path、classpath配置、开发中常见小问题
1:计算机概述(了解) (1)计算机 (2)计算机硬件 (3)计算机软件 系统软件:window,linux,mac 应用软件:qq,yy,飞秋 (4)软件开发(理解) 软件:是由数据和指令组成的.( ...
- js 开发过程中经验及总结记录
一 let 和 var 作用域 1 普通用法 for (var i = 0; i < 5; i++) { console.log(i); } console.log(i); //-- ...
- .NET平台常用框架
分布式缓存框架: Microsoft Velocity:微软自家分布式缓存服务框架. Memcahed:一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度. Redis:是一个高性能的K ...