LeetCode Longest Substring Without Repeating Characters

来源:互联网 发布:js中的eval方法 编辑:程序博客网 时间:2024/06/14 05:33

题目

Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest substring is "b", with the length of 1.

 

记录暂时的最大长度、扫描中的子串中各个字符的序号、子串的头、子串的尾。

子串尾从头开始向后扫一次:

1、如果字符未在子串中出现过,考虑目前子串长度是否超过暂时的最大

2、如果出现过,将子串头到上次出现该字符之间的字符都标记为未出现,子串头变为上次出现位置之后的那个位置

 

代码

class Solution {public:    int lengthOfLongestSubstring(string s) {long pos[128];//记录相应字符的位置,-1表示不再扫描的子串上for(int i=0;i<128;i++)pos[i]=-1;long max=0;//最大长度long first=0,last=0;//扫描中的子串的头、尾while(last<s.size()){if(pos[s[last]]==-1){pos[s[last]]=last;last++;if(last-first>max)max=last-first;}else{while(first<=pos[s[last]])pos[s[first++]]=-1;pos[s[last]]=last;last++;}}return max;    }};


 

 

0 0