In this article, we will write a program to reverse position of words in a given string using recursive approach.
Sample input
I am the best of bests
Output
bests of best the am I
Recursive Approach
We will remove first word from the input string and append it at the end.
Repeat it till all the words are removed and input becomes empty.
public class ReverseWordsInString {
public String reverse(String input) {
if (input.isEmpty()) {
return input;
}
String[] arr = input.split(" ", 2);
String firstWord = arr[0];
String remainingSentence;
if (arr.length == 2)
remainingSentence = arr[1];
else
remainingSentence = "";
return reverse(remainingSentence) + firstWord + " ";
}
}
1)Base condition in recursion, if the input is empty then we just return (unwind the stack in recursion) |
3)Tail recursion - removes first word and appends it to the last
JUnit testcase
We will write a simple Junit based testcase to assert the correctness of our given program.
JUnit Test
import org.junit.Test;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.*;
public class ReverseWordsInStringTest {
@Test
public void reverse() {
ReverseWordsInString utils = new ReverseWordsInString();
assertThat(utils.reverse("I am the best of bests"), equalTo("bests of best the am I"));
}
}
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.