function extractSubExpressions(str: string): string[] {
const stack: number[] = [];
const subExpressions: string[] = [];
for (let i = 0; i < str.length; i++) {
if (str[i] === "(") {
stack.push(i);
} else if (str[i] === ")") {
if (stack.length === 0) {
throw new Error("Invalid expression: Incorrect bracket placement");
}
const startIndex = stack.pop()!;
const subExpression = str.substring(startIndex, i + 1);
const replaceStr = subExpression.substr(1,subExpression.length-2)
subExpressions.push(replaceStr);
}
}
if (stack.length !== 0) {
throw new Error("Invalid expression: Unclosed brackets");
}
return subExpressions;
}
const str = 'a+b*(d-e)*c+(((b+a)+f)+g)';
const result = extractSubExpressions(str);
console.log(result); // ['d-e', 'b+a', '(b+a)+f', '((b+a)+f)+g']