zoukankan      html  css  js  c++  java
  • 159. Longest Substring with At Most Two Distinct Characters

    Given a string, find the length of the longest substring T that contains at most 2 distinct characters.

    For example, Given s = “eceba”,

    T is "ece" which its length is 3.

    Similar: 3. Longest Substring Without Repeating Characters (Almost same !)

    340. Longest Substring with At Most K Distinct Characters

    239. Sliding Window Maximum

     1 public class Solution {
     2     public int lengthOfLongestSubstringTwoDistinct(String s) {
     3         int[] array = new int[2];
     4         array[0] = -1;
     5         array[1] = -1;
     6         int max = 0;
     7         int start = 0;
     8         
     9         for (int i = 0; i < s.length(); i++) {
    10             max = max > (i-start) ? max : (i-start); // i  is not included
    11             char c = s.charAt(i);
    12             if (array[0] == -1) {
    13                 array[0] = c;
    14             } else if (array[0] != c && array[1] == -1) { // in case array[1] = array[0] 
    15                 array[1] = c;
    16             } else if (array[0] != c && array[1] != c) {
    17                 char pre = s.charAt(i-1);
    18                 int j = i-2;
    19                 while (j >= start && s.charAt(j) == pre) {
    20                     j--;
    21                 }
    22                 j++;
    23                 start = j;
    24                 array[0] = pre;
    25                 array[1] = c;
    26             }
    27         }
    28         
    29         max = max > (s.length() - start) ? max : (s.length() - start);
    30         return max;
    31     }
    32 }
  • 相关阅读:
    Photoshop
    前端性能优化
    Angular Cli和npm、node.js命令
    Angular项目结构
    页面布局
    滚动条与height
    1.2 Angular入门
    前端的e2e测试
    Angular的部署
    jQuery插件开发的基本形式
  • 原文地址:https://www.cnblogs.com/joycelee/p/5420852.html
Copyright © 2011-2022 走看看