• 边工作边刷题:70天一遍leetcode: day 71


    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.
    
    # Hide Company Tags Google
    # Hide Tags Hash Table Two Pointers String
    # Hide Similar Problems (M) Longest Substring Without Repeating Characters (H) Sliding Window Maximum (H) Longest Substring with At Most K Distinct Characters
    
    class Solution(object):
        def lengthOfLongestSubstringTwoDistinct(self, s):
            """
            :type s: str
            :rtype: int
            """
            char1, right1, char2, right2 = '', 0, '', 0
            start = 0
            longest = 0
            for i, c in enumerate(s):
                if not char1 or char1==c:
                    char1=c
                    right1=i
                elif not char2 or char2==c:
                    char2=c
                    right2=i
                else:
                    # print i
                    if right1<right2:
                        char1 = c
                        start=right1+1
                        right1 = i
                    else:
                        char2 = c
                        start=right2+1
                        right2 = i
                #print 'i={},start={},right1={},righ2={}'.format(i,start,right1,right2)
                longest = max(longest, i-start+1)
            return longest
    
    sol = Solution()
    assert sol.lengthOfLongestSubstringTwoDistinct("cdaba")==3
            
    
  • 相关阅读:
    Mac安装zookeeper
    征途
    vue-配置文件
    数组去重
    判断身份证
    判断邮箱
    判断手机号是否正确
    JS 时间格式转换
    打印 print-js
    自"愚"自乐的云服务器
  • 原文地址:https://www.cnblogs.com/absolute/p/5815631.html
Copyright © 2020-2023  润新知