Skip to content

Commit 031338f

Browse files
authored
Update decode-string.cpp
1 parent 4049662 commit 031338f

File tree

1 file changed

+11
-12
lines changed

1 file changed

+11
-12
lines changed

C++/decode-string.cpp

+11-12
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,27 @@ class Solution {
55
public:
66
string decodeString(string s) {
77
string curr;
8-
stack<int> nums;
9-
stack<string> strs;
8+
vector<int> nums;
9+
vector<string> strs;
1010
int n = 0;
1111
for (const auto& c: s) {
1212
if (isdigit(c)) {
1313
n = n * 10 + c - '0';
14+
} else if (isalpha(c)) {
15+
curr += c;
1416
} else if (c == '[') {
15-
nums.emplace(n);
17+
nums.emplace_back(n);
18+
strs.emplace_back(curr);
1619
n = 0;
17-
strs.emplace(curr);
1820
curr.clear();
1921
} else if (c == ']') {
20-
for (; nums.top() > 0; --nums.top()) {
21-
strs.top() += curr;
22+
for (; nums.back() > 0; --nums.back()) {
23+
strs.back() += curr;
2224
}
23-
nums.pop();
24-
curr = strs.top();
25-
strs.pop();
26-
} else {
27-
curr += c;
25+
nums.pop_back();
26+
curr = move(strs.back()); strs.pop_back();
2827
}
2928
}
30-
return strs.empty() ? curr : strs.top();
29+
return curr;
3130
}
3231
};

0 commit comments

Comments
 (0)