终曲

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2962 Accepted Submission(s): 977

Problem Description
最后的挑战终于到了!
站在yifenfei和MM面前的只剩下邪恶的大魔王lemon一人了!战胜他,yifenfei就能顺利救出MM。
Yifenfei和魔王lemon的挑战很简单:由lemon给出三个字符串,然后要yifenfei说出第一串的某个子串,要求该子串长度最小,并且同时包含第2个串和第3个串。
特别地,如果有多个这样的子串,则请输出字母序最小的一个。

Input
输入数据首先是一个整数C,表示测试数据有C组;
接着是C组数据,每组包含三行字符串,第一个字符串长度大于1小于100
后面两个串的长度大于1且小于10

Output
请对应每组输入数据输出满足条件的最短子串;
如果没有,请输出 No

Sample Input
2
abcd
ab
bc
abc
ab
bd

Sample Output
abc
No

Author
yifenfei

Source
ACM程序设计期末考试081230

问题链接:HDU2572 终曲
问题简述:(略)
问题分析:一般而言,有关字符串匹配的问题会使用像KMP那样的算法来解决。然而,C++的字符串类中的方法(函数)应该会使用像KMP那样的算法,所以直接使用字符串类中的方法(函数)可以解决绝大部分问题。
程序说明:使用了若干字符串类的方法(函数)来解决字符串匹配问题。看代码,不解释。
参考链接:(略)
题记:经典的字符串匹配解法。

AC的C++语言程序如下:

/* HDU2572 终曲 */#include <bits/stdc++.h>using namespace std;int main()
{int t;string s1, s2, s3;cin >> t;while(t--) {cin >> s1 >> s2 >> s3;int p2 = s1.find(s2);int p3 =  s1.find(s3);if(p2 == (int)string::npos || p3 == (int)string::npos)cout << "No" << endl;else if(s2.find(s3) != string::npos)cout << s2 << endl;else if(s3.find(s2) != string::npos)cout << s3 << endl;else {string ans(s1);// 算出子串最短长度int minlen = min(s2.length(), s3.length());// 枚举长度和起点int len = s1.size();for(int i = minlen; i <= len; i++) {for(int j = 0; j <= len - i; j++) {string t = s1.substr(j, i);if(t.find(s2) != string::npos && t.find(s3) != string::npos) {if(t.size() < ans.size() || (t.size() == ans.size() && t < ans))ans = t;}}if(ans != s1) break;    // 某长度找到解就不必找更长的解}cout << ans << endl;}}return 0;
}

HDU2572 终曲【字符串匹配】相关推荐

  1. CCF - 201409-3 - 字符串匹配

    问题描述 试题编号: 201409-3 试题名称: 字符串匹配 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行.你 ...

  2. 字符串匹配shiftand算法

    令人惊叹的Shift-And/Shift-Or 写在前面:Shift-And/Shift-Or是如此令人惊叹的算法,在KMP基础上开始一段神奇之旅. 目的:以Shift-And算法为载体,试图在减少思 ...

  3. 字符串匹配数据结构 --Trie树 高效实现搜索词提示 / IDE自动补全

    文章目录 1. 算法背景 2. Trie 树实现原理 2.1 Trie 树的构建 2.2 Trie树的查找 2.3 Trie树的遍历 2.4 Trie树的时间/空间复杂度 2.5 Trie 树 Vs ...

  4. 2021年度训练联盟热身训练赛第四场 H - Rock Paper Scissors(字符串匹配,FFT)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 2021年度训练联盟热身训练赛第四场 H - Rock Paper Scissors(字符串匹配,FF ...

  5. Rabin-Karp ( 字符串匹配 )详解

    字符串匹配,例从 字符串S 中( 长度为 n ),找到 字符串T ( 长度为 m ) 经典思路:遍历 字符串 S,对于每个都为起点,匹配一次,则 O( n m )的复杂度 但是这样我们就对 字符 重复 ...

  6. 字符串匹配KMP算法

    字符串匹配KMP KMP过程其实就是去找下一个更好的状态的过程,省略去了中间穷举的无用过程,直接跳到下一个更好的状态,通过模式串本身的信息,站在模式串的角度来考虑问题 取长的一对 若想让模式串直接从S ...

  7. c int转字符串_【C++实现python字符串函数库】字符串匹配函数startswith与endswith

    [C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...

  8. R语言stringr包str_count函数计算字符串匹配个数实战

    R语言stringr包str_count函数计算字符串匹配个数实战 目录 R语言stringr包str_count函数计算字符串匹配个数实战 #导入stringr包 #仿真数据

  9. 三十五、字符串匹配问题--KMP算法

    一.暴力匹配算法实现字符串匹配 如果用暴力匹配的思路,并假设现在 str1 匹配到 i 位置,子串 str2 匹配到 j 位置,则有: 如果当前字符匹配成功(即 str1[i] == str2[j]) ...

最新文章

  1. asp.net python 开发web 效率_【Django】Python web开发:几个模板系统的性能对比(转)...
  2. Got MethodID of ReferenceType that is not a member of the ReferenceType
  3. 什么是Vim,Vim及其安装
  4. mysql 的isnull
  5. Atitit.sql ast 表达式 语法树 语法 解析原理与实现 java php c#.net js python
  6. 为什么动物不需要吃盐
  7. web开发必备的几个软件
  8. Revit二次开发之创建共享参数及绑定共享参数【比目鱼原创】
  9. Jquery(十)jqueryUI常用功能实战
  10. 软件项目计划书的内容
  11. 设计模式-单例模式(Singleton)
  12. 如何在 Excel 图表中添加或删除次坐标轴?
  13. 单片机控制ws2812b
  14. uTools的插件使用
  15. java中po_Java中PO,DO,DTO,VO的概念
  16. doc转docx文件会乱吗_java下载doc/docx文件乱码的问题
  17. CultureInfo中重要的InvariantCulture
  18. 日文字符中常见的乱码情况---正波浪线“~”
  19. 12864液晶模块驱动
  20. bzoj-1128 Lam

热门文章

  1. OpenSSL 1.1.1 新特性: 全面支持国密SM2/SM3/SM4加密算法
  2. 使用GDAL构造OpenCV的图像格式
  3. web文件上传(一)--文件上传与json上传区别及方法
  4. C#中的委托和Java中的“委托”(Java8 lambda表达式)
  5. 获取Kubernetes容器上下文环境
  6. 600个开源iOS应用库
  7. android:id=@android:id/list,Logcat错误 - 内容必须有一个ListView的id属性是'android.R.id.list'...
  8. anaconda3环境整体打包放在Spark集群上运行
  9. 开启Hadoop/Yarn的日志监控功能,配置Spark历史服务,解决web端查看日志时的Java.lang.Exception:Unknown container问题
  10. Spring JPA实现增删改查