本文主要是介绍最长无重复字串(滑动窗口法C++),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.题目描述
输入一个字符串,给出该字符串的最长无重复字符的子串。
2.分析
解题思路1:
暴力解题:遍历所有子串,判断是否无重复子串,把最长的记录下来。
解题思路2:
滑动窗口法:所谓滑动窗口是一个形象的说法。这里指的是使用两个指针left和right表示子串的两端。用一个结构来记录每个字符在窗口中出现的次数。先走右指针right,把右指针指向的字符放入map中,记录此字符出现的次数,然后右指针往前走一位。接着收缩左指针,当当前字符对应的value大于1时,表明该字符在窗口中,收缩左窗口,使得不符合要求的字符划出窗口内。
若笔者笔力有限,叙述的不够清晰,建议对照下面的代码来理解。
3.代码
#include<iostream>
#include<vector>
#include<unordered_map>
#include
这篇关于最长无重复字串(滑动窗口法C++)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!