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.
思想: 滑动指针,每次添加一个字符,当这个字符和前面的字符有重复时滑动指针消去重复的字符及其之前的字符,重新计算长度与最大长度比较,记录下最大长度 代码: int lengthOfLongestSubstring(char* s) {//pwwkew char *now=s;//指向当前字符串首字符 char *out;//指向字符串任一字符 int flag=0;//判断是否有重复的字符 int longsize=1;//字符串长度 int maxsize=0;//字符串最大长度 if(*now=='\0') return 0; else { while(*now!='\0'){ maxsize=(maxsize>longsize)?maxsize:longsize; s++; if(*s=='\0') break; for(out=now;out<s;out++) { if(*s==*out){ if(out!=now) longsize=longsize-(out-now); now=++out; flag=1; break; } } if(flag==0) longsize++; flag=0; } maxsize=(maxsize>longsize)?maxsize:longsize; return maxsize; } } |