本文主要是介绍【LeetCode】03.无重复字符的最长子串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目要求
做题链接3.无重复字符的最长子串
解题思路
我们通过参考给出的输入很容易就会从每一个字符开始,看看最长能延续多长。我们通过画图发现一旦一个字符可以延续到另一个字符,那么我们就不需要考虑他中间仍然存在字符重复的问题。因此而后我们发现可以使用滑动窗口进行优化。
代码实现
class Solution
{
public:int lengthOfLongestSubstring(string s) {//哈希表标记次数,只要26个字母使用哈希数组int hash[255]={0};//滑动窗口解决问题int left=0,right=0;//最大长度int len=0;while(right<s.size()){//进窗口hash[s[right]]++;//判断出窗口,更新结果while(left<right&&hash[s[right]]>1){//更新结果len=max(len,right-left);//出窗口hash[s[left++]]--;}right++;}//整体都是字串的情况len=max(len,right-left);return len;}
};
这篇关于【LeetCode】03.无重复字符的最长子串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!