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;
    }
};

 

 posted on 2017-04-27 23:22  平和之心  阅读(108)  评论(0编辑  收藏  举报