leetcode-Longest Substring Without Repeating Characters-3
2016-08-29 00:10
483 查看
找出字符串的最长不重复子串的长度
直观的做法是枚举以每个元素为开头的最长不重复子串,更新长度,时间复杂度是ON^2,空间O1
更高效的做法:用一个hash表保存每个字符最后出现的下标,用一个指针i,表名当前最长不重复子串的首位置,遍历字符串,在hash表中找到当前字符最后一次出现的位置记为k,如果k>=i,说明当前字符在当前最长不重复子串中出现过了,那么更新i和hash[s[j]]。只需遍历一遍,时间复杂度是ON,空间O256(ascii字符其实只需128就够了)
直观的做法是枚举以每个元素为开头的最长不重复子串,更新长度,时间复杂度是ON^2,空间O1
更高效的做法:用一个hash表保存每个字符最后出现的下标,用一个指针i,表名当前最长不重复子串的首位置,遍历字符串,在hash表中找到当前字符最后一次出现的位置记为k,如果k>=i,说明当前字符在当前最长不重复子串中出现过了,那么更新i和hash[s[j]]。只需遍历一遍,时间复杂度是ON,空间O256(ascii字符其实只需128就够了)
class Solution { public: int lengthOfLongestSubstring(string s) { int i=0; int vis[300]; for(int j=0;j<300;j++) vis[j]=-1; int ans=0; if(s.size()==0) return 0; if(s.size()==1) return 1; int len=s.size(); for(int j=0;j<s.size();j++){ if(vis[s[j]]>=i){ ans=max(ans,j-i); cout<<i<<" "<<j<<" "<<j-i<<endl; i=vis[s[j]]+1; } vis[s[j]]=j; } ans=max(ans,len-i); return ans; } };
相关文章推荐
- [LeetCode] Longest Substring Without Repeating Characters 解题报告
- [Leetcode]_3 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
- Leetcode: 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 002】Longest Substring Without Repeating Characters || Median of Two Sorted Arrays
- LeetCode —— Longest Substring Without Repeating Characters
- LeetCode——Longest Substring Without Repeating Characters
- leetcode-Longest Substring Without Repeating Characters 最长不重复子串
- leetcode 3 Longest Substring Without Repeating Characters
- LeetCode之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-3-Longest Substring Without Repeating Characters