Skip to content

Commit ac4f38e

Browse files
committed
Add 2000. Reverse Prefix of Word
1 parent 3dc7845 commit ac4f38e

2 files changed

Lines changed: 25 additions & 2 deletions

File tree

src/main/java/org/dojo/leetcode/Stacks.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,5 +62,12 @@ public boolean isValid(String s) {
6262

6363
boolean isMatching(char self, char other) { return (self == '(' && other == ')') || (self == '{' && other == '}') || (self == '[' && other == ']'); }
6464

65-
65+
public String reversePrefix(String word, char ch) {
66+
for (int i = 0; i < word.length(); i++) {
67+
if (word.charAt(i) == ch) {
68+
return new StringBuilder(word.substring(0, i + 1)).reverse().append(word, i + 1, word.length()).toString();
69+
}
70+
}
71+
return word;
72+
}
6673
}

src/test/java/org/dojo/leetcode/StacksTests.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.dojo.leetcode;
22

3-
import org.junit.jupiter.api.Test;
43
import org.junit.jupiter.params.ParameterizedTest;
54
import org.junit.jupiter.params.provider.Arguments;
65
import org.junit.jupiter.params.provider.MethodSource;
@@ -9,6 +8,7 @@
98
import java.util.stream.Stream;
109

1110
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
11+
import static org.junit.jupiter.api.Assertions.assertEquals;
1212

1313
class StacksTests {
1414
private final Stacks sut = new Stacks();
@@ -49,4 +49,20 @@ void isValid(String s, boolean expected) {
4949
System.out.printf("Expected: %s, Actual: %s\n", expected, actual);
5050
assert expected == actual;
5151
}
52+
53+
public static Stream<Arguments> reversePrefixData() {
54+
return Stream.of(
55+
Arguments.of("abcdefd", 'd', "dcbaefd"),
56+
Arguments.of("xyxzxe", 'z', "zxyxxe"),
57+
Arguments.of("abcd", 'z', "abcd")
58+
);
59+
}
60+
61+
@ParameterizedTest
62+
@MethodSource("reversePrefixData")
63+
void reversePrefix(String word, char ch, String expected) {
64+
String actual = sut.reversePrefix(word, ch);
65+
System.out.printf("Input: \"%s\", '%c' => Expected: \"%s\", Actual: \"%s\"\n", word, ch, expected, actual);
66+
assertEquals(expected, actual);
67+
}
5268
}

0 commit comments

Comments
 (0)