1593. 拆分字符串使唯一子字符串的数目最大
传送门
题意
结题思路
# 思路1:暴力
# 用set()集合去重,每加一个字符时,判断加上它的数目多还是不加它的数目多。
# 从第二个字符开始,使用DFS返回将其合并到上一个集合的最后一个元素中,或单独成为一个集合的一个新元素。
# 取数目最大的分隔数目。
# 搜索的要点:(1)初始状态;
# (2)重复产生新状态;
# (3)检查新状态是否为目标,是结束,否转(2); [1]
# 如果搜索是以接近起始状态的程序依次扩展状态的,叫宽度优先搜索。
# 如果扩展是首先扩展新产生的状态,则叫深度优先搜索。
class Solution(object):
def maxUniqueSplit(self, s):
len1 = len(s)
if len1 == 1:
return 1
def dfs(cur, ss):
if(cur == len1-1):
return len(set(ss.split()))
cur += 1
return max(dfs(cur, ss + s[cur]), dfs(cur, ss + ' ' + s[cur]))
return dfs(0, s[0])
本文如有纰漏,可评论向我提意见哦
简单问题关注我后可以帮忙解答,
祝关注+点赞的小可爱刷题顺利,获得心仪的offer!!