Skip to content

Commit 06c20b1

Browse files
solves replace all to avoid consecutive repeating characters
1 parent 8d9d2d7 commit 06c20b1

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -394,3 +394,4 @@
394394
| 1560 | [Most Visited Sector in a Circular Track](https://leetcode.com/problems/most-visited-sector-in-a-circular-track) | [![Java](assets/java.png)](src/MostVisitedSectorInACircularTrack.java) | |
395395
| 1566 | [Detect Pattern of Length M Repeated K or More Times](https://leetcode.com/problems/detect-pattern-of-length-m-repeated-k-or-more-times) | [![Java](assets/java.png)](src/DetectPatternOfLengthMRepeatedKOrMoreTimes.java) | |
396396
| 1572 | [Matrix Diagonal Sum](https://leetcode.com/problems/matrix-diagonal-sum) | [![Java](assets/java.png)](src/MatrixDiagonalSum.java) | |
397+
| 1576 | [Replace All ?'s to Avoid Consecutive Repeating Characters](https://leetcode.com/problems/replace-all-s-to-avoid-consecutive-repeating-characters) | [![Java](assets/java.png)](src/ReplaceAllToAvoidConsecutiveRepeatingCharacters.java) | |
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// https://leetcode.com/problems/replace-all-s-to-avoid-consecutive-repeating-characters/submissions
2+
// T:(n)
3+
// S: O(n)
4+
5+
public class ReplaceAllToAvoidConsecutiveRepeatingCharacters {
6+
private static final Character QUESTION_MARK = '?';
7+
8+
public String modifyString(String s) {
9+
final StringBuilder result = new StringBuilder();
10+
char last = QUESTION_MARK;
11+
for (int index = 0 ; index < s.length() ; index++) {
12+
char c = s.charAt(index);
13+
if (c == QUESTION_MARK) {
14+
char left = get(s, index - 1);
15+
if (left == QUESTION_MARK) left = last;
16+
final char right = get(s, index + 1);
17+
c = 'a';
18+
while (c == left || c == right) c++;
19+
last = c;
20+
}
21+
result.append(c);
22+
}
23+
return result.toString();
24+
}
25+
26+
private char get(String string, int index) {
27+
if (index < 0 || index >= string.length()) return QUESTION_MARK;
28+
return string.charAt(index);
29+
}
30+
}

0 commit comments

Comments
 (0)