Java教程

剑指 Offer 48. 最长不含重复字符的子字符串

本文主要是介绍剑指 Offer 48. 最长不含重复字符的子字符串,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

剑指 Offer 48. 最长不含重复字符的子字符串
请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。

示例 1:

输入: "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

输入: "pwwkew"
输出: 3

解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int max_sub = 0, left = 0, pos = 0;
        vector<bool> flag(256, false);
        while(pos < s.size()){
            while(flag[s[pos]]){
                flag[s[left++]] = false;
            }
            max_sub = max(max_sub, pos - left + 1);
            flag[s[pos++]] = true;
        }
        return max_sub;
    }
};
这篇关于剑指 Offer 48. 最长不含重复字符的子字符串的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!