O(N^2)AC..
1 class Solution { 2 3 public: 4 int lengthOfLongestSubstring(string s) { 5 int n = s.length(); 6 if( n == 0 ) 7 return 0; 8 int ans = 0, i, j; 9 int start = 0; 10 for(i=0; i<n; i++) { 11 for(j=i-1; j>=start; j--) { 12 if(s[j] == s[i]) { 13 start = j+1; 14 break; 15 } 16 } 17 ans = max(ans, i-j); 18 } 19 return ans; 20 } 21 };
使用hash表优化查询...
class Solution { public: int lengthOfLongestSubstring(string s) { int n = s.length(); int ans = 0, i, j; int start = 0; bool vis[128] = {false}; for(i=0; i<n; i++) { if(!vis[s[i]]) { vis[s[i]] = true; } else { while(s[start] != s[i]) { vis[s[start]] = false; start++; } start++; } ans = max(ans, i-start+1); } return ans; } };