Leetcode 3557. Find Maximum Number of Non Intersecting Substrings
- Leetcode 3557. Find Maximum Number of Non Intersecting Substrings
- 1. 解题思路
- 2. 代码实现
- 题目链接:3557. Find Maximum Number of Non Intersecting Substrings
1. 解题思路
这一题就是一个比较直接的动态规划的题目,我们只需要考察每一个位是否可以作为一个子串的开头,如果可以那么比较其被取用以及不被取用时的较大值将其进行返回,如果不可以,那么直接返回其不被取用时的值即可。
2. 代码实现
给出python代码实现如下:
class Solution:def maxSubstrings(self, word: str) -> int:n = len(word)locs = defaultdict(list)for i, ch in enumerate(word):locs[ch].append(i)@lru_cache(None)def dp(idx):if idx >= n:return 0ch = word[idx]i = bisect.bisect_left(locs[ch], idx+3)if i >= len(locs[ch]):return dp(idx+1)else:return max(dp(idx+1), 1 + dp(locs[ch][i] + 1))return dp(0)
提交代码评测得到:耗时1713ms,占用内存420.2MB。