LeetCode : Given a string, find the length of the longest serial substring without repeating characters.
2017-08-29 02:36
465 查看
Given a string, find the length of the longest serial substring without repeating characters.
Examples:
Given
Given
Given
题目解析:意思就是找出字符串的连续递增 or 递减子串,返回该串及其长度
思路:
1 用另一个数组存储每一个char的“状态”;
2 正数表示递增,0表示与前一个char相同不增不减,负数表示递减;
3 如+3表示该char是第4个递增字符(从0开始);
4 如字符串"dkggashgt"对应的状态数组如下:
0,1,-1,0,-1,1,-1,-2,1
记录最大 or 最小值,即为最长递增 or 最长递减串长度,对应数组下标亦为最长串最后char的数组下标;
代码是js写的,如下:
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.
题目解析:意思就是找出字符串的连续递增 or 递减子串,返回该串及其长度
思路:
1 用另一个数组存储每一个char的“状态”;
2 正数表示递增,0表示与前一个char相同不增不减,负数表示递减;
3 如+3表示该char是第4个递增字符(从0开始);
4 如字符串"dkggashgt"对应的状态数组如下:
0,1,-1,0,-1,1,-1,-2,1
记录最大 or 最小值,即为最长递增 or 最长递减串长度,对应数组下标亦为最长串最后char的数组下标;
代码是js写的,如下:
1 var lengthOfLongestSubstring = function(str) { 2 if(str.length === 0) return 0; 3 var maxLen = 1; //maximum serial string length 4 var maxIdx = 0; //the array sub-index of the last char in the result string 5 var tmpArr = [0]; //array to save the status data 6 for (var i = 1, len = str.length; i < len; i++) { 7 var pa = str[i-1]; 8 var pb = str[i]; 9 var ra = tmpArr[i-1]; 10 if(pa>pb){ 11 if(ra<0){ 12 tmpArr.push(ra-1); 13 if(-1*tmpArr[i]+1 > maxLen){ 14 maxLen = -1*tmpArr[i]+1; 15 maxIdx = i; 16 } 17 18 }else{ 19 tmpArr.push(-1); 20 if(maxLen<2){ 21 maxLen = 2; 22 maxIdx = i; 23 } 24 } 25 }else if(pa<pb){ 26 if(ra>0){ 27 tmpArr.push(ra+1); 28 if(tmpArr[i]+1 > maxLen){ 29 maxLen = tmpArr[i] + 1; 30 maxIdx = i; 31 } 32 }else{ 33 tmpArr.push(1); 34 if(maxLen<2){ 35 maxLen = 2; 36 maxIdx = i; 37 } 38 } 39 }else{ 40 tmpArr.push(0); 41 } 42 } 43 var strRet = str.slice(maxIdx-maxLen+1, maxIdx+1);//result string 44 return [strRet,maxLen]; //result string and its length 45 };
相关文章推荐
- Given a string, find the length of the longest substring without repeating characters
- leetcode-Length of the longest substring without repeating characters
- Length of the longest substring without repeating characters
- Length of the longest substring without repeating characters(dp)
- Length of the longest substring without repeating characters
- leetcode--3,Longest Substring Without Repeating Characters &&53. Maximum Subarray&&String.valueOf()
- Leetcode- string/array - Longest Substring Without Repeating Characters
- [leetcode][string] Longest Substring Without Repeating Characters
- 【leetcode 002】Longest Substring Without Repeating Characters || Median of Two Sorted Arrays
- LeetCode-string-Longest Substring Without Repeating Characters
- Leetcode 3. Longest Substring Without Repeating Characters The Solution of Python and Javascript
- Find the longest substring with k unique distinct characters in a given string (Google)
- You're given a string of lower-case Latin letters. Your task is to find the length of its longest su
- LeetCode 第三题(Longest Substring Without Repeating Characters)Java
- LeetCode 3 Longest Substring Without Repeating Characters
- Java-LeetCode-Longest Substring Without Repeating Characters
- leetcode——Longest Substring Without Repeating Characters
- leetcode学习笔记:Longest Substring Without Repeating Characters
- LeetCode --- Longest Substring Without Repeating Characters
- 算法分析与设计——LeetCode Problem.3 Longest Substring Without Repeating Characters