diff --git a/src/main/java/problemset/a2785/SortVowelsInString.java b/src/main/java/problemset/a2785/SortVowelsInString.java new file mode 100644 index 0000000..b852eb0 --- /dev/null +++ b/src/main/java/problemset/a2785/SortVowelsInString.java @@ -0,0 +1,28 @@ +package problemset.a2785; + +import java.util.*; + +public class SortVowelsInString { + + private Set vowels = Set.of('a', 'e', 'i', 'o', 'u'); + + public String sortVowels(String s) { + char[] charArray = s.toCharArray(); + List 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); + } +} diff --git a/src/test/java/problemset/a2785/SortVowelsInStringTest.java b/src/test/java/problemset/a2785/SortVowelsInStringTest.java new file mode 100644 index 0000000..0755c04 --- /dev/null +++ b/src/test/java/problemset/a2785/SortVowelsInStringTest.java @@ -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)); + } +}