def solution(s):
def backtracking(cur_substring, idx, used):
if idx == len(s):
return len(used)
cur_substring += s[idx]
if cur_substring in used:
return backtracking(cur_substring, idx+1, used) # already use then keep going
else:
ans = 0
used.add(cur_substring)
ans = max(ans, backtracking('', idx+1, used)) # add split
used.discard(cur_substring)
ans = max(ans, backtracking(cur_substring, idx+1, used)) # not add split, keep going
return ans
return backtracking('', 0, set())
print("My solution:")
print(solution("121"))
print(solution("aaaaaaa"))
print(solution("aba"))
print(solution("aababaa"))
print(solution("21"))
print(solution("22"))