Skip to content

Commit 65fedc3

Browse files
committed
5 problems solved.
1 parent 3179289 commit 65fedc3

File tree

5 files changed

+147
-0
lines changed

5 files changed

+147
-0
lines changed

src/225.cpp

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
class Stack {
2+
private:
3+
deque<int> dq[2];
4+
int flag = 0;
5+
int topelem;
6+
int size = 0;
7+
public:
8+
// Push element x onto stack.
9+
void push(int x) {
10+
dq[flag].push_back(x);
11+
topelem = x;
12+
++size;
13+
}
14+
15+
// Removes the element on top of the stack.
16+
void pop() {
17+
if (size > 0)
18+
{
19+
int i = 1;
20+
while (i < size - 1)
21+
{
22+
dq[1 - flag].push_back(dq[flag].front());
23+
dq[flag].pop_front();
24+
++i;
25+
}
26+
if (i == size - 1)
27+
{
28+
int val = dq[flag].front();
29+
dq[1 - flag].push_back(val);
30+
dq[flag].pop_front();
31+
topelem = val;
32+
}
33+
dq[flag].pop_front();
34+
35+
flag = 1 - flag;
36+
--size;
37+
}
38+
}
39+
40+
// Get the top element.
41+
int top() {
42+
return topelem;
43+
}
44+
45+
// Return whether the stack is empty.
46+
bool empty() {
47+
return size == 0;
48+
}
49+
};

src/434.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
int countSegments(string s) {
2+
int sz = s.size();
3+
int i = 0, ct = 0;
4+
while (i < sz)
5+
{
6+
i = s.find_first_not_of(" \t\n", i);
7+
if (i == string::npos)
8+
break;
9+
i = s.find_first_of(" \t\n", i + 1);
10+
++ct;
11+
}
12+
return ct;
13+
}

src/67.cpp

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
string addBinary(string a, string b) {
2+
int len1 = a.size();
3+
int len2 = b.size();
4+
5+
string res(len1 > len2 ? len1 + 1 : len2 + 1, '0');
6+
int i = len1 - 1, j = len2 - 1;
7+
int ct = 0, k = res.size() - 1;
8+
while (i >= 0 && j >= 0)
9+
{
10+
int sum = a[i] - '0' + b[j] - '0' + ct;
11+
res[k] = sum % 2 + '0';
12+
--k;
13+
--i;
14+
--j;
15+
ct = sum >> 1 ? 1 : 0;
16+
}
17+
while (i >= 0)
18+
{
19+
int sum = a[i] - '0' + ct;
20+
res[k] = sum % 2 + '0';
21+
--k;
22+
--i;
23+
ct = sum >> 1 ? 1 : 0;
24+
}
25+
while (j >= 0)
26+
{
27+
int sum = b[j] - '0' + ct;
28+
res[k] = sum % 2 + '0';
29+
--k;
30+
--j;
31+
ct = sum >> 1 ? 1 : 0;
32+
}
33+
if (ct > 0)
34+
res[k] = ct + '0';
35+
if (res[0] == '0')
36+
return string(res.begin() + 1, res.end());
37+
else
38+
return res;
39+
}

src/917.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
string reverseOnlyLetters(string S)
2+
{
3+
int len = S.size();
4+
int i = 0, j = len-1;
5+
while (i < j)
6+
{
7+
while (i < j && isalpha(S[i]) == false)
8+
++i;
9+
while (i < j && isalpha(S[j]) == false)
10+
--j;
11+
if (i < j)
12+
{
13+
std::swap(S[i], S[j]);
14+
++i;
15+
--j;
16+
}
17+
}
18+
19+
return S;
20+
}

src/942.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
vector<int> diStringMatch(string S) {
2+
int len = S.size()+1;
3+
if (len <= 1)
4+
return {};
5+
6+
vector<int> res(len, 0);
7+
int k = len-2;
8+
int i = len-1, j = 0;
9+
while (k >= 0)
10+
{
11+
if (S[k] == 'I')
12+
{
13+
res[k+1] = i;
14+
--i;
15+
}
16+
else
17+
{
18+
res[k+1] = j;
19+
++j;
20+
}
21+
--k;
22+
}
23+
res[0] = i;
24+
25+
return res;
26+
}

0 commit comments

Comments
 (0)