LeekCode:03:Longest Substring Without Repeating Characters

来源:互联网 发布:js拉链 编辑:程序博客网 时间:2024/06/09 17:24

问题描述:

Given a string, find the length of the longest substring without repeating characters.

Examples:

Given “abcabcbb”, the answer is “abc”, which the length is 3.

Given “bbbbb”, the answer is “b”, with the length of 1.

Given “pwwkew”, the answer is “wke”, with the length of 3. Note that the answer must be a substring, “pwke” is a subsequence and not a substring.

问题分析:

寻找字符串中不重复的最大子串,返回长度。

算法分析:

借助两个string来实现,res始终保存当前最长的子串,tem作为中间值。
从字符串中每次取出一个字符,判断是否在tem中,如果不在,向中间值中加入这个字符,如果在,删除重复元素之前的所有元素,并将当前字符加入。
最后tem与res比较,将元素多的的赋给最res,这样只用O(n)的时间复杂度就能找出最长不重复子串。

代码实现:

class Solution {public:    int lengthOfLongestSubstring(string s) {        string res,tem;        for(int i=0;i<s.size();i++){              int idx=tem.find(s[i],0);            if(-1==idx){                tem.push_back(s[i]);            }else{                tem.erase(0,idx+1);                tem.push_back(s[i]);            }            if(tem.size()>res.size()){                    res=tem;             }        }        return res.size();    }};
原创粉丝点击