首页 > 其他 > 详细

159. Longest Substring with At Most Two Distinct Characters

时间:2016-09-07 10:34:33      阅读:101      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!