LeetCode Longest Substring Without Repeating Characters
2013-11-30 10:32
471 查看
bool isRepeated(string s) { vector<char> vec; for (int i=0;i<s.length();i++) { if (vec.empty()) { vec.push_back(s[i]); } else { vector<char>::iterator iter=vec.end(); //iter = vec.find(s[i]);vector中无find成员,用算法中的find iter = find(vec.begin(),vec.end(),s[i]); if(iter==vec.end()) { vec.push_back(s[i]); } else return true; } } return false; } int lengthOfLongestSubstring(string s) { int strlen = s.length(); int subMaxlen=0,curlen=0; for (int i=0;i<strlen;i++) { for (int j=i;j<strlen;j++) { string substr=s.substr(i,j-i+1); if (!isRepeated(substr)) { curlen = j-i+1; if (curlen>subMaxlen) { subMaxlen = curlen; } } else break; } } return subMaxlen; }
这是刚开始写的代码,一次提交通过,运行时间为1544ms,看别人的提交的下面这个时间为76ms,差太多了。主要是上面的方法函数调用太多了,不断地传递字串。
int lengthOfLongestSubstring(string s) { // Start typing your C/C++ solution below // DO NOT write int main() function int longest = 0; int slen = s.length(); if(slen < 0) return 0; if(slen == 1) return 1; int pre = 1; for(int i = 1; i < slen; ++i) { char tmp = s[i]; int j = i-1; int count = 1; while((j>=0) && (tmp != s[j])) {j--;count++;} if(count >= pre+1) count = pre+1; if(count > longest) longest = count; pre = count; } return longest; }下面的是自己改过的用一个函数实现的。
int lengthOfLongestSubstring2(string s) { int strlen = s.length(); if (strlen==0) { return 0; } int maxlen = 1; for (int i=0;i<strlen;i++) { int j=i; int flag=1; while(flag==1) { int k; for (k=i;k<j&&j<strlen;k++) { if (s[k]==s[j]) { flag=0; break; } } if (flag==1) { if (j-i+1>maxlen) { maxlen=j-i+1; } j++;// this cannot exchange order with the above sentence if (j==strlen)//this is necessary { flag=0; break; } } } } return maxlen; }运行时间为108ms,写加上调的时间快用两个小时了,好歹出来了。
相关文章推荐
- LeetCode学习笔记[3]:Longest Substring Without Repeating Characters
- Leetcode Longest Substring Without Repeating Characters
- LeetCode题解 || Longest Substring Without Repeating Characters (O(n)算法)问题
- 【LeetCode从零单排】No 3 Longest Substring Without Repeating Characters
- 【leetcode】Longest Substring Without Repeating Characters
- [leetcode] Longest Substring Without Repeating Characters
- LeetCode3 Longest Substring Without Repeating Characters
- LeetCode-Q3-Longest Substring Without Repeating Characters
- leetcode3 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.无重复字符的最长子串LongestSubstringWithoutRepeatingCharacters
- 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] Longest Substring Without Repeating Characters
- LeetCode 3 Longest Substring Without Repeating Characters
- LeetCode Longest Substring Without Repeating Characters