1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| class Solution { List<String> ans = new ArrayList<>(); Set<String> set = new HashSet<>(); int result = 0; public int maxUniqueSplit(String s) { dfs(0, s); return result; }
public void dfs(int cur, String s) { result = Math.max(result, ans.size());
for (int i = cur; i < s.length(); i++) { String str = s.substring(cur, i + 1); if (set.contains(str)) { continue; } ans.add(str); set.add(str); dfs(i + 1, s); ans.remove(ans.size() - 1); set.remove(str); } } }
|