2810. Faulty Keyboard

Stack

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public String finalString(String s) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == 'i') {
sb.reverse();
} else {
sb.append(c);
}
}
return sb.toString();
}
}

Deque

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
public String finalString(String s) {
Deque<Character> deque = new ArrayDeque<>(s.length());
boolean addLast = true;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == 'i') {
addLast = !addLast;
} else {
if (addLast) {
deque.addLast(c);
} else {
deque.addFirst(c);
}
}
}

StringBuilder sb = new StringBuilder();
for (char c : deque) {
sb.append(c);
}
return addLast ? sb.toString() : sb.reverse().toString();
}
}

References

2810. Faulty Keyboard