3. Longest Substring Without Repeating Characters : LeetCode 题解

来源:互联网 发布:linux安装php环境 编辑:程序博客网 时间:2024/06/15 23:09

Problem Description:

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.

C++ Solution:
从网上查阅了一些资料,并对代码进行了改进,然而很遗憾,并没有通过提交……
或许换一种思想来提高速度,是非常有必要的。

第一次尝试(提交失败):

class Solution {public:    int lengthOfLongestSubstring(string s) {        int len = s.length();        int Max_Len = 0;        int index = 0;        for (int i = 1; i < len; i++) {            map<char,int> MAP;            MAP[s[i]] = 1;            int Count = 1;            for (int j = i-1; j >= index; j--) {                if ( MAP.find(s[j]) == MAP.end() )                     { MAP[s[j]] = 1; Count++; }                else                     { index = j+1; break; }            }//For()-1.1 End.            Max_Len < Count ? (Max_Len=Count) : 0;        }//For()-1 End.        return Max_Len;    }};

第二次尝试(提交成功):

class Solution {public:    int lengthOfLongestSubstring(string s) {        int len = s.length();        int Max_Len = 0;        int index = 0;        for (int i = 1; i < len; i++) {            int Count = 1;            for (int j = i-1; j >= index; j--) {                if ( s[i] == s[j] )                     { index = j+1; break; }                else                     Count++;            }//For()_1.1 End.            Max_Len < Count ? (Max_Len=Count) : 0;        }//For()_1 End.        return Max_Len;    }};

备注:答案多有借鉴,请多担待

0 0
原创粉丝点击