diff --git a/src/main/java/com/thealgorithms/strings/ReverseWordsInString.java b/src/main/java/com/thealgorithms/strings/ReverseWordsInString.java new file mode 100644 index 000000000000..5f9d27b4e9e2 --- /dev/null +++ b/src/main/java/com/thealgorithms/strings/ReverseWordsInString.java @@ -0,0 +1,22 @@ +package com.thealgorithms.strings; + +import java.util.Arrays; +import java.util.Collections; + +public final class ReverseWordsInString { + + private ReverseWordsInString() { + } + + /** + * @brief Reverses words in the input string + * @param s the input string + * @return A string created by reversing the order of the words in {@code s} + */ + + public static String reverseWordsInString(final String s) { + var words = s.trim().split("\\s+"); + Collections.reverse(Arrays.asList(words)); + return String.join(" ", words); + } +} diff --git a/src/test/java/com/thealgorithms/strings/ReverseWordsInStringTest.java b/src/test/java/com/thealgorithms/strings/ReverseWordsInStringTest.java new file mode 100644 index 000000000000..44e397459349 --- /dev/null +++ b/src/test/java/com/thealgorithms/strings/ReverseWordsInStringTest.java @@ -0,0 +1,20 @@ +package com.thealgorithms.strings; + +import java.util.stream.Stream; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +public class ReverseWordsInStringTest { + @ParameterizedTest + @MethodSource("inputStream") + void numberTests(String expected, String input) { + Assertions.assertEquals(expected, ReverseWordsInString.reverseWordsInString(input)); + } + + private static Stream inputStream() { + return Stream.of(Arguments.of("blue is Sky", "Sky is blue"), Arguments.of("blue is Sky", "Sky \n is \t \n blue "), Arguments.of("", ""), Arguments.of("", " "), Arguments.of("", "\t")); + } +}