Longest Substring Without Repeating Characters--最长无重复字符串(重)
2014-06-20 23:59
381 查看
这个真没搞太懂 改天搞
题意: 最长的吴重复字符子串
当时我的思路是,利用have数组来记录当前字符最近一次出现的位置,假定从Position 之后的字符串都是无重复的。
如果遍历到的当前字符的have[s[i]] 小于position,那么说明该字符在position之后没有出现过,无重复,那么更新have[s[i]] = i 当前的位置。
如果遍历到的当前的字的have[s[i]] 大于position, 那么说明该字符在position之后出现重复,需要计算该段无重复字符串的长度 = i - position。 同时,更新position为该重复出现的字符的上一次出现的位置 position = have[s[i]]。 更新该字符的新位置have[s[i]] = i; 更新最大值。
题意: 最长的吴重复字符子串
当时我的思路是,利用have数组来记录当前字符最近一次出现的位置,假定从Position 之后的字符串都是无重复的。
如果遍历到的当前字符的have[s[i]] 小于position,那么说明该字符在position之后没有出现过,无重复,那么更新have[s[i]] = i 当前的位置。
如果遍历到的当前的字的have[s[i]] 大于position, 那么说明该字符在position之后出现重复,需要计算该段无重复字符串的长度 = i - position。 同时,更新position为该重复出现的字符的上一次出现的位置 position = have[s[i]]。 更新该字符的新位置have[s[i]] = i; 更新最大值。
class Solution { public: int lengthOfLongestSubstring(string s) { int have[256], len,len1,len2; int max = 0, position = 0; memset(have,0,256*sizeof(int)); for(int i = 0; i < s.length(); i++) { if(i == s.length()-1) { if(have[s[i]] <= position) { len = i+1-position; max = len > max ? len : max; } } if(have[s[i]] <= position) { have[s[i]] = i+1; } else { len = i-position; max = len > max ? len : max; position = have[s[i]]; have[s[i]] = i+1; } // cout << i+1 << "\t" << s[i] << "\t" <<max << "\t" << position << endl; } return max; } };
相关文章推荐
- Leetcode-3 Longest Substring Without Repeating Characters 最长无重复字节字符串
- Longest Substring Without Repeating Characters 字符串中最长的无重复子串长度
- 【字符串&最长无重复子串】Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters (最长不重复字符的子序列) Java-O(n)解法
- 3.无重复字符的最长子串(Longest Substring Without Repeating Characters)
- LeetCode OJ:Longest Substring Without Repeating Characters(最长不重复子串)
- [LeetCode] Longest Substring Without Repeating Characters 最长无重复子串
- Longest Substring Without Repeating Characters,求没有重复字符的最长字串
- LeetCode Longest Substring Without Repeating Characters 最长不重复子串查找
- LeetCode-3 Longest Substring Without Repeating Characters(最长无重复子串)
- leetcode03 Longest Substring Without Repeating Characters 最长不重复子串
- 【LeetCode】003 Longest Substring Without Repeating Characters 最长的没有重复的子字符串
- Longest Substring Without Repeating Characters 最长不重复子串 @LeetCode
- (算法分析Week19)Longest Substring Without Repeating Characters 最长无重复子串 [Medium]
- Longest Substring Without Repeating Characters 最长不重复子串【中】
- [Leetcode #3]Longest Substring Without Repeating Characters 无重复字符的最长子串
- [LeetCode] Longest substring without repeating characters 最长无重复子串
- [LeetCode] Longest Substring Without Repeating Characters最长无重复子串
- [LeetCode] Longest Substring Without Repeating Characters 无重复字符的最长子串
- Longest Substring Without Repeating Characters(最长无重复子串的长度) 回顾!略难