Brace Expansion II LeetCode solution in Python
1class Solution:2def braceExpansionII(self, expression: str) -> List[str]:3s = list(reversed("{" + expression + "}"))45def full_word():6cur = []7while s and s[-1].isalpha():8cur.append(s.pop())9return "".join(cur)1011def _expr():12res = set()13if s[-1].isalpha():14res.add(full_word())15elif s[-1] == "{":16s.pop() # remove open brace17res.update(_expr())18while s and s[-1] == ",":19s.pop() # remove comma20res.update(_expr())21s.pop() # remove close brace22while s and s[-1] not in "},":23res = {e + o for o in _expr() for e in res}24return res2526return sorted(_expr())