LeetCode 1087. Brace Expansion Solution in Java & Python | Explanation + Code

CoderIndeed
0
1087. Brace Expansion

Description

You are given a string s representing a list of words. Each letter in the word has one or more options.

  • If there is one option, the letter is represented as is.
  • If there is more than one option, then curly braces delimit the options. For example, "{a,b,c}" represents options ["a", "b", "c"].

For example, if s = "a{b,c}", the first character is always 'a', but the second character can be 'b' or 'c'. The original list is ["ab", "ac"].

Return all words that can be formed in this manner, sorted in lexicographical order.

 

Example 1:

Input: s = "{a,b}c{d,e}f"
Output: ["acdf","acef","bcdf","bcef"]

Example 2:

Input: s = "abcd"
Output: ["abcd"]

 

Constraints:

  • 1 <= s.length <= 50
  • s consists of curly brackets '{}', commas ',', and lowercase English letters.
  • s is guaranteed to be a valid input.
  • There are no nested curly brackets.
  • All characters inside a pair of consecutive opening and ending curly brackets are different.

Solutions

Solution 1

PythonJava
class Solution: def expand(self, s: str) -> List[str]: def convert(s): if not s: return if s[0] == '{': j = s.find('}') items.append(s[1:j].split(',')) convert(s[j + 1 :]) else: j = s.find('{') if j != -1: items.append(s[:j].split(',')) convert(s[j:]) else: items.append(s.split(',')) def dfs(i, t): if i == len(items): ans.append(''.join(t)) return for c in items[i]: t.append(c) dfs(i + 1, t) t.pop() items = [] convert(s) ans = [] dfs(0, []) ans.sort() return ans(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !