codeChallenge/BracketExpension.java
2024-11-02 19:29:05 +00:00

68 lines
2.0 KiB
Java

import java.util.ArrayList;
import java.util.List;
/**
* BracketExpension
*/
public class BracketExpension {
// You are given a string expression which consists of several comma separated
// tokens
// enclosed within opening ('{') and closing ('}') curly braces.
// The string expression might or might not have a prefix before opening curly
// brace('{') and
// a suffix after closing curly brace ('}').
// You have to return a list of strings as output for each comma separated item
// as shown below in the examples.
//
// Example 1:
// Input = "/2022/{jan,feb,march}/report"
// Output = "/2022/jan/report"
// "/2022/feb/report"
// "/2022/march/report"
//
// Example 2:
// Input = "over{crowd,eager,bold,fond}ness"
// Output = "overcrowdness"
// "overeagerness"
// "overboldness"
// "overfondness"
//
// Example 3:
// Input = "read.txt{,.bak}"
// Output = "read.txt"
// "read.txt.bak"
public static void main(String[] args) {
String tokens = "over{crowd,eager,bold,fond}ness";
String tokeneez = "/2022/{jan,feb,march}/report";
List<String> options = TokensListed(tokeneez);
for (int i = 0; i < options.size(); i++) {
System.out.println(options.get(i));
}
}
public static List<String> TokensListed(String str) {
List<String> ans = new ArrayList<>();
// let's find the starting and the ending of the indecies of the curly braces;
int startIndex = str.indexOf("{");
int endIndex = str.indexOf("}");
if (startIndex == -1 || endIndex == -1 || startIndex > endIndex) {
ans.add(str);
return ans;
}
// Extract the prefix, suffix and the options;
String prefix = str.substring(0, startIndex);
String suffix = str.substring(endIndex + 1);
String options = str.substring(startIndex + 1, endIndex);
// Split the options by comma
String[] tokens = options.split(",");
for (String token : tokens) {
ans.add(prefix + token + suffix);
}
return ans;
}
}