leetcode 3 Longest Substring Without Repeating Characters

1699 ワード

原題:Given a string,find the length of the longest substring without repeating characters.For example, the longest substring without repeating letters for “abcabcbb” is “abc”, which the length is 3. For “bbbbb” the longest substring is “b”, with the length of 1. あなたに1つの文字列をあげて、あなたにこの文字列の中の1つの最も長いサブストリングを探し出させて、このサブストリングが満たす条件は重複していない文字です.
int lengthOfLongestSubstring(string s) {  
  int n = s.length();  
  int i = 0, j = 0;  
  int maxLen = 0;  
  bool exist[256] = { false };  
  while (j < n) {  
    if (exist[s[j]]) {  
      maxLen = max(maxLen, j-i);  
      while (s[i] != s[j]) {  
        exist[s[i]] = false;  
        i++;  
      }  
      i++;  
      j++;  
    } else {  
      exist[s[j]] = true;  
      j++;  
    }  
  }  
  maxLen = max(maxLen, n-i);  
  return maxLen;  
}  

问题を真剣に読んでいないで、结局この问题は私に间违いを読ませて、私に最も长い缲り返し现れる子串を求めるのだと误解させて、半日考えて、kmpとhashはすべて使っても出てこなかった.その結果、問題はこの子串の中に重複するアルファベット==がないことを探して、瞬間的にやりました.以上のコードはleetcodeディスカッションエリアのコードで、よく書けていて、思わず引用しました.