-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSimple_string_expansion.js
More file actions
32 lines (29 loc) · 1.03 KB
/
Copy pathSimple_string_expansion.js
File metadata and controls
32 lines (29 loc) · 1.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
const str = "k(a3(b(a2(c))))zz"; //"kabaccbaccbacczz"
const simpleCalc = (data) => {
const splitedData = data.split('').reverse();
let result = '';
splitedData.forEach(item => {
if(Number.isNaN(+item)) {
result = result + item;
} else {
let intermediateResult = '';
for(let i = 1; i <= item; i++) {
intermediateResult = intermediateResult + result;
}
result = intermediateResult;
}
});
return result.split('').reverse().join('');
};
const calculate = (input) => {
const firstBracket = input.indexOf('('),
lastBracket = input.lastIndexOf(')');
if (firstBracket && lastBracket !== -1) {
const newData = input.slice(firstBracket + 1, lastBracket);
const result = calculate(newData);
return simpleCalc(`${input.slice(0, firstBracket)}${result}${input.slice(lastBracket + 1)}`);
} else {
return simpleCalc(input);
}
};
console.log(calculate('k(a3(b(a2(c))))zz'));