LeetCode 159. Longest Substring with At Most Two Distinct Characters --Java,C++,Python解法

寻找字符串s中最多包含两种不同字符的最长子串长度。提供Python、C++和Java解法,题目难度为Hard。文章探讨了不同解法的思路和实现。
摘要由CSDN通过智能技术生成

题目地址:Longest Substring with At Most Two Distinct Characters - LeetCode


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

Example 1:

Input: "eceba"
Output: 3
Explanation: t is "ece" which its length is 3.

Example 2:

Input: "ccaabbb"
Output: 5
Explanation: t is "aabbb" which its length is 5.

这道题目是hard难度的,题目的意思很简单,就是找到具有最多两个不同字符的最长子串的长度。

看到题目会感觉O(n)的时间复杂度应该能做出这道题目。

在写了大约20分钟代码后,Python解法出来了:

class Solution:
    def lengthOfLongestSubstringTwoDistinct(self, s: str) -> int:
        count = 0
        p = {
   }
        l = {
   }
        for now in range(0, len(s)):
            i = s[now]
            p[i] = now
            if len(l) < 2 and i not in l:
                l[i] = 1
            elif i in l:
                l[i] += 1
            else:
                if count < sum(l.values(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值