Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions src/main/java/problemset/a2785/SortVowelsInString.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package problemset.a2785;

import java.util.*;

public class SortVowelsInString {

private Set<Character> vowels = Set.of('a', 'e', 'i', 'o', 'u');

public String sortVowels(String s) {
char[] charArray = s.toCharArray();
List<Character> vowelList = new ArrayList<>();
for (char c : charArray) {
if (vowels.contains(Character.toLowerCase(c))) {
vowelList.add(c);
}
}

Collections.sort(vowelList);
int index = 0;

for (int i = 0; i < charArray.length; i++) {
char curr = Character.toLowerCase(charArray[i]);
if (vowels.contains(curr))
charArray[i] = vowelList.get(index++);
}
return new String(charArray);
}
}
36 changes: 36 additions & 0 deletions src/test/java/problemset/a2785/SortVowelsInStringTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package problemset.a2785;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class SortVowelsInStringTest {

private SortVowelsInString vowels;

private String inputTestCaseOne;
private String expectedTestCaseOne;
private String inputTestCaseTwo;
private String expectedTestCaseTwo;

@BeforeEach
void setUp() {
vowels = new SortVowelsInString();

inputTestCaseOne = "lEetcOde";
expectedTestCaseOne = "lEOtcede";
inputTestCaseTwo = "lYmpH";
expectedTestCaseTwo = "lYmpH";
}

@Test
void testCaseOne_sortVowels() {
assertEquals(expectedTestCaseOne, vowels.sortVowels(inputTestCaseOne));
}

@Test
void testCaseTwo_sortVowels() {
assertEquals(expectedTestCaseTwo, vowels.sortVowels(inputTestCaseTwo));
}
}
Loading