题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给一个字符串和一些字母与数值的对应,要求所有子字符串的最大开销(包括空字符串)

思路分享

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution:
def maximumCostSubstring(self, s: str, chars: str, vals: List[int]) -> int:
rec = defaultdict(int)
# get default valut first
for i in range(ord('a'), ord('z')+1):
rec[chr(i)] = i-ord('a')+1
# print(rec)
for i, c in enumerate(chars):
rec[c] = vals[i]
# print(rec)

# dynamic plan
# n = len(s)
# f = [0] * (n+1)
# for i in range(n):
# f[i+1] = max(0, f[i])+rec[s[i]]
# return max(f)

ans = cur = 0
for c in s:
cur = max(0, cur) + rec[c]
ans = max(cur, ans)
return ans