2606. 找到最大开销的子字符串

WrRan / 2024-09-19 / 原文

题目链接 2606. 找到最大开销的子字符串
思路 前缀和/动态规划-最长子数组和-简单变体
题解链接 【转换】最大子数组和(Python/Java/C++/Go)
关键点
时间复杂度 \(O(n)\)
空间复杂度 \(O(1)\)

代码实现(动态规划):

class Solution:
    def maximumCostSubstring(self, s: str, chars: str, vals: List[int]) -> int:
        dct = dict(zip(ascii_lowercase, range(1, 27))) | dict(zip(chars, vals))
        answer = dp = 0
        for c in s:
            dp = max(dp, 0) + dct[c]
            answer = max(answer, dp)
        return answer