Longest Substring Without Repeating Characters

来源:互联网 发布:人工智能的好处 英文 编辑:程序博客网 时间:2024/05/22 01:33

题目见:点击打开链接

这大概是我第一次在leetcode上做出一个自己比较满意的答案吧!

下面说下思路:

刚开始找了几组样例来推导算法,结果吧都不成功,看了半天才猛然想到map这个数据结构,于是就用上了!虽然刚看到有比自己更好的代码,但毕竟是第一次写出自己感觉还算满意的代码!

当然算法复杂度得是线性的。

例如:s = "qwwekw"

此时我想到s[2]是等于s[1]的,这时候把问题抽象为寻找在s[2]之前的最接近s[2]且等于s[2]的字符。写到这里,想必有人就能大致猜出我的代码逻辑了。

下面上代码!

class Solution {public:    int lengthOfLongestSubstring(string s) {      map<char, int> m;        int curlen, maxlen, i, pos;        string substr;        if (s.size() == 0)                return 0;        if (s.size() < 2)                return 1;        pos = 0;        curlen = maxlen = 1;        for (i = 1, m[s[0]] = 0; i < s.size(); ++i)        {                if (m.find(s[i]) == m.end())                {                        curlen++;                }                else                {                        maxlen = max(maxlen, curlen);                        if (m[s[i]] >= pos) //                        {                                pos = m[s[i]];                                curlen = i - m[s[i]];                        }                        else                        {                                curlen++;                        }                }                m[s[i]] = i;        }        maxlen = max(maxlen, curlen);        return maxlen;    }};



阅读全文
0 0
原创粉丝点击