题目截图
ac code
class Solution:
def braceExpansionII(self, expression: str) -> List[str]:
class S(set):
# 重构加法取并集
__add__ = lambda s, o: S(s | o)
# 重构乘法取笛卡尔积
__mul__ = lambda s, o: S(i + j for i, j in itertools.product(s, o))
# (\W+):匹配一个或多个非字母进行切割,匹配到的非字母全部缓存
# "\1"提取第一个位置的内容
# 将逗号对应+号
# 括号转换
# 将两种乘法的形式的乘号显式表示
expression = re.sub('(\w+)', r'S(["\1"])', expression).replace(',', '+').replace('{', '(').replace('}', ')').replace(')(',')*(').replace(')S',')*S')
# 进行运算
return sorted(eval(expression))