leetcode03 无重复字符的最长子串

3. 无重复字符的最长子串

随机一题


给定一个字符串,找出不含有重复字符的最长子串的长度。

示例 1:

输入: "abcabcbb"

输出: 3 

解释:无重复字符的最长子串是 "abc",其长度为 3。

示例 2:

输入: "bbbbb"

输出: 1

解释: 无重复字符的最长子串是 "b",其长度为 1。

示例3: 

输入: "pwwkew"

输出: 3

解释: 无重复字符的最长子串是 "wke",其长度为 3。

 请注意,答案必须是一个子串,"pwke" 是一个子序列 而不是子串。

思路: 创建一个新的字符串p,然后不断比较s中的s[i]与p中的每一个元素,如果有s[i]==p[j]则清除p中的第(0,j),然后继续将第i各元素加入p中

 

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        string p="";
        p+=s[0];
        if(s.size()==0) return 0;
        if(s.size()==1) return 1;
        int size=p.size();
        int *a=new int[s.size()];
        int k=0;
        for(int i=1;i<s.size();i++){
            for(int j=0;j<p.size();j++){
                if(s[i] == p[j]){
                    if(size<p.size())
                    {
                        size=p.size();
                    }
                     p.erase(0,j+1);//删除p中0~j的元素,注意erase()的用法
                     break;
                }
            }
            p+=s[i];
        }

        return size>p.size()?size:p.size();
        
    }
};

猜你喜欢

转载自blog.csdn.net/honry55/article/details/81986306