Split a String Into the Max Number of Unique Substrings
MediumHash TableStringBacktracking
Solution
export function maxUniqueSplit(s: string): number {
return backtrack(s, new Set());
}
function backtrack(s: string, seen: Set<string>, start = 0): number {
if (start === s.length) {
return 0;
}
let result = 0;
for (let end = start + 1; end <= s.length; end++) {
const substring = s.substring(start, end);
if (seen.has(substring)) continue;
seen.add(substring);
result = Math.max(result, backtrack(s, seen, end) + 1);
seen.delete(substring);
}
return result;
}
Complexity
- Time:
O(N*2^N)
- Space:
O(N)