LeetCode Algorithm

Posted CC梦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Algorithm相关的知识,希望对你有一定的参考价值。

LeetCode Algorithm

原文出处:【LeetCode

算法参考:【陈皓 coolshell

3.Longest Substring Without Repeating Characters

 

3.Longest Substring Without Repeating Characters

/**********************************************************
** 3.Longest Substring Without Repeating Characters
** 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.
**********************************************************/
#include <string>
#include <iostream>
#include <map>

using namespace std;

int lengthOfLongestSubstring(string s) {
    int longestLen = 0;
    int lastRepeatPos = -1;
    map<char, int> matchCharacters;

    for (int i=0; i<s.size(); ++i) {
        if (matchCharacters.find(s[i]) != matchCharacters.end() && lastRepeatPos < matchCharacters[s[i]]) {
            lastRepeatPos = matchCharacters[s[i]];
        } 

        if (i-lastRepeatPos > longestLen) {
            longestLen = i-lastRepeatPos;
        }

        matchCharacters[s[i]] = i;
    } 

    return longestLen;    
}

//-----example-----
int main(int arc, char ** argv) {
    string s = "abcabcbb";
    cout << s << ":" << lengthOfLongestSubstring(s) << endl;

    s = "bbbbb";
    cout << s << ":" << lengthOfLongestSubstring(s) << endl;

    s = "pwwkew";
    cout << s << ":" << lengthOfLongestSubstring(s) << endl;

    return 0;
}

//-----output-----
//abcabcbb:3
//bbbbb:1
//pwwkew:3

 

以上是关于LeetCode Algorithm的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Algorithm 328. 奇偶链表

LeetCode Algorithm 414. 第三大的数

LeetCode Algorithm 704. 二分查找

LeetCode Algorithm 606. 根据二叉树创建字符串

LeetCode Algorithm 606. 根据二叉树创建字符串

leetcode_1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold_[二维前缀和](代码片段