Maximum Number of Non-Overlapping Substrings LeetCode solution in Python
1from collections import defaultdict234class Solution:5def maxNumOfSubstrings(self, s: str) -> List[str]:6st = defaultdict(lambda: -1)7ed = defaultdict(int)8for i, c in enumerate(s):9if st[c] == -1:10st[c] = i11ed[c] = i12else:13ed[c] = i14ints = []15for c in set(s):16b, e = st[c], ed[c]17i = b18while i <= e and b == st[c]:19b = min(b, st[s[i]])20e = max(e, ed[s[i]])21i += 122if b == st[c]:23ints.append((b, e))24ints.sort(key=lambda e: e[1])25res = []26prev = -127for i in range(len(ints)):28j, k = ints[i]29if j > prev:30res.append(s[j : k + 1])31prev = k32return res