LeetCode 727. 最小窗口子序列(滑动窗口)
发布日期:2021-07-01 03:31:33
浏览次数:2
分类:技术文章
本文共 1105 字,大约阅读时间需要 3 分钟。
文章目录
1. 题目
给定字符串 S and T,找出 S 中最短的(连续)子串 W ,使得 T 是 W 的 子序列 。
如果 S 中没有窗口可以包含 T 中的所有字符,返回空字符串 “”。
如果有不止一个最短长度的窗口,返回开始位置最靠左的那个。示例 1:输入:S = "abcdebdde", T = "bde"输出:"bcde"解释:"bcde" 是答案,因为它在相同长度的字符串 "bdde" 出现之前。"deb" 不是一个更短的答案,因为在窗口中必须按顺序出现 T 中的元素。 注:所有输入的字符串都只包含小写字母。S 长度的范围为 [1, 20000]。T 长度的范围为 [1, 100]。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-window-subsequence 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
类似题目:
- 先向右匹配,全部匹配了,再向左寻找最近的匹配点 x (可能较短)
- 从x+1再循环上面步骤
class Solution { public: string minWindow(string S, string T) { int i = 0, j = 0, minlen = INT_MAX; int l = -1, r; while(i < S.size()) { if(S[i] == T[j]) { j++; if(j == T.size())//全部匹配了 { r = i+1; j--; while(j >= 0) { while(S[i] != T[j])//向左匹配 i--; i--;j--; } i++,j++; if(r-i < minlen) { minlen = r - i; l = i; } } } i++; } return l == -1 ? "" : S.substr(l,minlen); }};
20 ms 8.4 MB
我的CSDN
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
转载地址:https://michael.blog.csdn.net/article/details/107994370 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月25日 03时35分27秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
31 Qt 之绘图之绘制一个漂亮的圆及圆弧
2021-07-05
32 Qt 之绘图之绘制一个漂亮的西瓜
2021-07-05
33 Qt 之绘图之绘制卡通蚂蚁
2021-07-05
34 Qt 之绘图之绘制时钟
2021-07-05
35 Qt 之绘制闪烁文本
2021-07-05
QT知识点总结(一)
2021-07-05
QT知识点总结(二)
2021-07-05
QT知识点总结(三)
2021-07-05
一劳永逸的解除ByondCompare4注册问题
2021-07-05
Unix环境变量--文件操作
2021-07-05
Unix环境变量--进程管理
2021-07-05
Unix环境变量--信号(一)
2021-07-05
Unix环境变量--线程基础
2021-07-05
Unix环境变量--缓冲区
2021-07-05
Unix环境变量--堆和栈的区别
2021-07-05
Unix环境变量--POSIX异步I/O
2021-07-05
UNIX环境变量--读写函数变体
2021-07-05
UNIX环境变量--存储映射I/O
2021-07-05
UNIX环境变量--IPC之管道通信
2021-07-05
C++虚继承【详解】
2021-07-05