zoukankan      html  css  js  c++  java
  • [LeetCode] Longest Substring Without Repeating Characters

    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.

    用两个指针,一个指向当前子串的头,一个指向尾,尾指针不断往后扫描,当有字符前面出现过了,记录当前子串长度和最优解的比较结果。然后头指针不断往后扫描,直到扫描到一个字符和尾指针相同,则尾指针继续扫描,当尾指针到达字符串结尾,算法结束。复杂度O(n) + O(n) = O(n)

     1 class Solution {
     2 private:
     3     bool canUse[256];
     4 public:
     5     int lengthOfLongestSubstring(string s) {
     6         // Start typing your C/C++ solution below
     7         // DO NOT write int main() function
     8         memset(canUse, true, sizeof(canUse));
     9         
    10         int count = 0;
    11         int start = 0;
    12         int ret = 0;
    13         for(int i = 0; i < s.size(); i++)
    14         {
    15             if (canUse[s[i]])
    16             {
    17                 canUse[s[i]] = false;
    18                 count++;
    19             }
    20             else
    21             {
    22                 ret = max(ret, count);
    23                 while(true)
    24                 {
    25                     canUse[s[start]] = true;
    26                     count--;
    27                     if (s[start] == s[i])
    28                         break;
    29                     start++;
    30                 }
    31                 start++;
    32                 canUse[s[i]] = false;
    33                 count++;
    34             }
    35         }
    36         
    37         ret = max(ret, count);
    38         
    39         return ret;
    40     }
    41 };

     

  • 相关阅读:
    dev DEV控件:gridControl常用属性设置
    C# ListView用法详解
    LeetCode 22_ 括号生成
    LeetCode 198_ 打家劫舍
    LeetCode 46_ 全排列
    LeetCode 121_ 买卖股票的最佳时机
    LeetCode 70_ 爬楼梯
    LeetCode 53_ 最大子序和
    LeetCode 326_ 3的幂
    LeetCode 204_ 计数质数
  • 原文地址:https://www.cnblogs.com/chkkch/p/2766530.html
Copyright © 2011-2022 走看看