码迷,mamicode.com
首页 > 其他好文 > 详细

159. Longest Substring with At Most Two Distinct Characters

时间:2016-09-07 10:37:12      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

 public int lengthOfLongestSubstringTwoDistinct(String s) {      //sliding window
        if(s == null || s.length() < 3)
            return s.length();
        Set<Character> set = new HashSet<>();
        int max = 0, index = 0;                                 // use index to record left bar of window
        for(int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if(!set.contains(c)) {
                if(set.size() >= 2) {
                    for(int j = i - 1; j >= 0; j--)             // scan from i - 1 to 0
                        if(s.charAt(j) != s.charAt(i - 1)) {
                            set.remove(s.charAt(j));
                            index = j + 1;
                            break;
                        }
                } 
                set.add(c);
            }
            max = Math.max(i - index + 1, max);
        }
        return max;
    }

 

159. Longest Substring with At Most Two Distinct Characters

标签:

原文地址:http://www.cnblogs.com/zmyvszk/p/5848381.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!