From 0c3db6842e9b004f16f58c02344a770580e80b18 Mon Sep 17 00:00:00 2001 From: ErdemT09 Date: Wed, 5 May 2021 20:57:19 +0300 Subject: [PATCH] 1087-Solution 1 with TreeSet --- .../curated170/medium/BraceExpansion.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/main/java/algorithms/curated170/medium/BraceExpansion.java diff --git a/src/main/java/algorithms/curated170/medium/BraceExpansion.java b/src/main/java/algorithms/curated170/medium/BraceExpansion.java new file mode 100644 index 00000000..85b874d7 --- /dev/null +++ b/src/main/java/algorithms/curated170/medium/BraceExpansion.java @@ -0,0 +1,41 @@ +package algorithms.curated170.medium; + +import java.util.Arrays; +import java.util.TreeSet; + +public class BraceExpansion { + public static String[] expand(String S) { + TreeSet set = new TreeSet<>(); + if (S.length() == 0) { + return new String[] { "" }; + } else if (S.length() == 1) { + return new String[] { S }; + } + + if (S.charAt(0) == '{') { + int i = 0; + while (S.charAt(i) != '}') { + i++; + } + String sub = S.substring(1, i); + String[] subs = sub.split(","); + String[] strs = expand(S.substring(i + 1)); + for (int j = 0; j < subs.length; j++) { + for (String str : strs) { + set.add(subs[j] + str); + } + } + } else { + String[] strs = expand(S.substring(1)); + for (String str : strs) { + set.add(S.charAt(0) + str); + } + } + return set.toArray(new String[0]); + } + + public static void main(String[] args) { + var strs = expand("{a,b}c{d,e}f"); + System.out.println(Arrays.toString(strs)); //prints [acdf, acef, bcdf, bcef] + } +}