zoukankan      html  css  js  c++  java
  • Leetcode 3. Longest Substring Without Repeating Characters

    Problem reference: https://leetcode.com/problems/longest-substring-without-repeating-characters

    // My solution:
    // A simple dp, the key point is that the substring is serialy.
    
    // Traverse every node and regard it as the end point,
    // then we can figure out the state transition equation:
    /*
        if (there was no duplicated letter before)
            answer[now] =  answer[now-1] + 1;
        else
            answer[now] = min(distance between the duplicated letters, answer[now-1] + 1)
    */
    
    class Solution {
    public:
        int lengthOfLongestSubstring(string s) {
            if (s.size() <= 1) return s.size();
            // Store the last position for a letter.
            std::map<char,int> last_char;
            std::map<char,int>::iterator it;
            
            // Store the optimum answer for every node.
            std::vector<int> rec;
            int ans = 0;
            for (int i=0;i<s.size();i++) {
                // Initialize value as result for current node.
                rec.push_back(1);
                it = last_char.find(s[i]);
                // Special handling of the initial character.
                if (i == 0) {
                    last_char[s[i]] = i;
                    continue;
                }
                if (it == last_char.end()) {
                    rec[i] = rec[i-1] + 1;
                } else {
                    rec[i]=min((i-(it->second)), rec[i-1] + 1);
                }
                last_char[s[i]] = i;
                ans = max(ans, rec[i]);
            }
            return ans;
        }
    };
    

      

  • 相关阅读:
    操作winrar
    lucene.NET详细使用与优化详解
    js实现记住帐号或密码(js读写COOKIE)
    jQuery对select操作小结
    XMLHelper
    AJAX2用法
    as3Crypto and php, what a fun ride!
    linux文件描述符导致squid拒绝服务
    Centos 增加硬盘
    安装Squid log analyzer分析工具
  • 原文地址:https://www.cnblogs.com/kkrisen/p/7876066.html
Copyright © 2011-2022 走看看