最短子串
来源:互联网 发布:开淘宝店的具体步骤 编辑:程序博客网 时间:2024/05/17 04:57
问题描述:
输入两个字符串S,T(均由大写英文字母组成,且length(S)>=length(T)),要求在S中找出包含T中所有字符的最短子串,假设最短子串唯一。(有兴趣的同学可以尝试用O(n)的时间复杂度解决该问题,注:本题无该要求)
输入描述:
输入为两行。第一行为字符串S;第二行为字符串T。
输出描述:
输出S的一个子串,该子串为包含T中所有字符的最短子串,如果不存在这样的子串,则输出"No"。
输入样例1:
ADOBECODEBANCABC
输出样例1:
BANC
输入样例2:
ABCDEFACDABGH
输出样例2:
No
#include <iostream>#include <cstring>#include <algorithm>using namespace std;char t[1001], w[1001];int nt[1001], pos[1001];int d[1001];int main(){ int tn, wn; memset(nt, -1, sizeof(nt)); memset(pos, -1, sizeof(pos)); memset(d, 0, sizeof(d)); cin >> t >> w; tn = strlen(t); wn = strlen(w); for(int i = tn-1; i >= 0; i--) for(int j = 0; j <= wn; j++) if(t[i] == w[j]){nt[i] = pos[j]; pos[j] = i;} for(int i = 0; i < wn; i++) { while(pos[i]!= -1 && d[pos[i]]) pos[i] = nt[pos[i]]; if(pos[i] == -1) {cout << "No"; return 0;} d[pos[i]] = 1; //cout << pos[i] << " "; } sort(pos, pos + wn); int fir = pos[0], las = pos[wn-1]; int dist = las - fir; while(pos[0] != -1){ while(pos[0]!= -1 && d[pos[0]]) pos[0] = nt[pos[0]]; if(pos[0] == -1) break; d[pos[0]] = 1; sort(pos, pos + wn); if(dist > pos[wn-1] - pos[0]) { fir = pos[0]; las = pos[wn-1]; dist = las - fir; } } for(int i = fir; i <= las; i++) cout << t[i];}
阅读全文
0 0
- 最短子串
- 最短子串
- 包含集合的最短子串
- poj2752 kmp 最短子串重复次数
- 2014美团笔试之寻找最短子串
- 一个字符串中包含另一个字符串所有字符的最短子串
- 【百度面试题】求包含固定字符集的最短子串
- 算法题:给定一字符串,求其包含给定字符集中所有字符的最短子串
- 一道题:给一个字符串,和一个字符集,求该字符串包含所有字符集的最短子串
- 求有N种颜色的珠子串中包含所有颜色的最短子串
- 求有N种颜色的珠子串中包含所有颜色的最短子串
- 给定一个字符串,找到包含该字符串所有字符的最短子串
- n个珠子m种颜色,包含全部m种颜色的最短子串长度
- 一个字符串中包含另一个字符串所有字符的最短子串长度?——《编程之美》最短摘要的生成的简化
- 给一个很长的字符串str 还有一个字符集比如"abc" 找出str 里包含"abc"的最短子串。要求O(n)
- 给一个很长的字符串str 还有一个字符集比如{a,b,c} 找出str 里包含{a,b,c}的最短子串。要求O(n)
- 每天学习一算法系列(30)(给一个很长的字符串str 还有一个字符集比如{a,b,c} 找出str 里包含{a,b,c}的最短子串。要求O(n).)
- screenX clientX pageX的区别
- 知识学习——Hadoop MapReduce开发入门
- 如何用思维导图学Java编程思想
- 96 年美女胜出!那个有关“猪脸识别”的比赛决出冠军啦
- XYNUOJ 词组缩写
- 最短子串
- Apache +Jetty的负载均衡与集群配置(下)
- 树莓派自带摄像头OpenCV图像识别-二维码识别
- 浮点数的二进制表示
- #ifndef/#define/#endif使用详解
- bzoj2426 [HAOI2010]工厂选址 读题+贪心
- 你真的不知道你的CPU到底有多强!
- 基础+就业\黑马程序员_Springmvc+Mybatis由浅入深全套视频教程video\Springmvc+Mybatis由浅入深全套视频教程\springmvc\day0\11springmvc入
- 二维数组可以赋值一维数组