File tree Expand file tree Collapse file tree 5 files changed +147
-0
lines changed Expand file tree Collapse file tree 5 files changed +147
-0
lines changed Original file line number Diff line number Diff line change
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
+ };
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments