Pages

Reverse position of words in a string using recursion

 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

  1. We will remove first word from the input string and append it at the end.

  2. 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)
2)We are splitting input string into two parts - first element of array will contain the first word, second element of array will contain the remaining sentence

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.