Content

给出两个小写字母组成的字符串,求两个字符串的最长公共子串,如有多个按字典序顺序输出,如没有输出 No common sequence.,每两组数据间输出一个空行,最后一组数据后不应输出空行

数据范围:字符串长度不超过 \(300\)。

Solution

原本是奔着作为 SA 的练习题来的,结果看完题目之后,我:???这题目有紫题???

话归正题。由于本题字符串的长度只有 \(300\),因此我们可以直接暴力提取出两个字符串里面的所有子串,然后扫过去找两个字符串的公共子串,取所有公共子串的长度的最大值,然后再回去扫,把所有长度最大的公共子串丢进一个 vector 里面直接排序就可以了。

注意这道题目的特判和毒瘤的输出格式,因为这个我 WA 了好几发。

Code

namespace Solution {
string s, t;
map<string, int> mp; iv Main() {
int kase = 0;
while(cin >> s >> t) {
mp.clear(), kase++;
if(kase > 1) puts("");
int lens = s.size(), lent = t.size(), ans = 0;
F(int, len, 1, lens) F(int, i, 0, lens - len) mp[s.substr(i, len)] |= 1;
F(int, len, 1, lent) F(int, i, 0, lent - len) mp[t.substr(i, len)] |= 2;
for(auto x : mp) if(x.se == 3) ans = max(ans, (int)x.fi.size());
if(!ans) puts("No common sequence.");
else {
vector<string> res;
for(auto x : mp) if((int)x.fi.size() == ans && x.se == 3) res.push_back(x.fi);
sort(res.begin(), res.end());
F(int, i, 0, (int)res.size() - 1) cout << res[i] << endl;
}
}
return;
}
}

最新文章

  1. Chrome同步最新host文件IP列表
  2. Cotex-M3内核STM32F10XX系列时钟及其配置方法
  3. BZOJ4010: [HNOI2015]菜肴制作
  4. WebUI-自用
  5. 解决Android AVD的方向键DPAD不能用的问题
  6. C++学习30 重载++和--(自增自减运算符)
  7. 项目打包 tomcat部署
  8. Aspose.cells异步读写操作
  9. ci框架中输出sql语句
  10. 使用 SVN 创建 Externals 引用 其他 SVN项目
  11. Solve Error: &quot;errcode&quot;: 85005, &quot;errmsg&quot;: &quot;appid not bind weapp hint&quot;
  12. DSP2812&#160; 启动详解
  13. 【学习笔记】剖析MVVM框架,简单实现Vue数据双向绑定
  14. 开发还是应该使用linux
  15. Python进阶 学习笔记(二)
  16. 最小化Linux系统安装
  17. 一次简单完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试
  18. MySQL InnoDB锁机制之Gap Lock、Next-Key Lock、Record Lock解析
  19. [教程] 【【【【odex教程之jar】】】】/system/framework里面的jar做odex g13
  20. MQTT Stresser

热门文章

  1. Devs--开源规则引擎介绍
  2. NFLSOJ 1060 - 【2021 六校联合训练 NOI #40】白玉楼今天的饭(子集 ln)
  3. C语言小练习 微型学生管理系统
  4. Python基础之列表内置方法
  5. 一个简单的BypassUAC编写
  6. 学习java的第十三天
  7. Learning Spark中文版--第四章--使用键值对(1)
  8. AOP与IOC的概念
  9. Data Calendar
  10. Java资源下载