We have to reverse char[]
using recursion.
- Input:
["H","a","n","n","a","h"]
- Output:
["h","a","n","n","a","H"]
package codeMonk;
public class RevereseString {
public char[] reverseStr(char[] reversedString, int startIndex , int lastIndex, int midIndex) {
// Base Condition
if(startIndex > midIndex || midIndex >= lastIndex){
return reversedString;
} else {
char storeChar = reversedString[startIndex];
reversedString[startIndex] = reversedString[lastIndex -1];
reversedString[lastIndex -1 ] = storeChar;
return reverseStr(reversedString, ++startIndex , --lastIndex, midIndex);
}
}
public static void main(String[] args) {
char[] oldArray = {'A',' ','m','a','n',',',' ','a',' ','p','l','a','n',',',' ','a',' ','c','a','n','a','l',':',' ','P','a','n','a','m','a'};
int midIndex = 0 + (oldArray.length - 0)/2 ;
RevereseString reverseStr = new RevereseString();
char [] newArray = reverseStr.reverseStr(oldArray, 0 , oldArray.length, midIndex);
for(char ch : newArray) {
System.out.print(ch +" ");
}
}
}
This code works fine, but how can I improve it and reduce the lines of code?