Reverse a string in Java in 5 Different Ways?.
Ans: its very easy though and very popular question in interview.So thought of giving my inputs
on it.
Examples:
Input : abhinaw
Output : wanihba
Input: Abhinaw Tripathi
Output: ihtapirT wanihbA
Before,dig in would like to tell you some interesting facts about String and StringBuffer classes:
1. Objects of String are immutable.
2. String class in Java does not have reverse() method, however StringBuilder class has built in reverse() method.
3. StringBuilder class do not have toCharArray() method, while String class does have toCharArray() method.
So the first ways is using:
1)Converting String into Bytes:
getBytes() method is used to convert the input string into bytes[].
Method:
1. Create a temporary byte[] of length equal
to the length of the input string.
2. Store the bytes (which we get by using
getBytes() method) in reverse order into
the temporary byte[] .
3. Create a new String abject using byte[] to
store result.
Sample Code:
import java.lang.*;
import java.io.*;
import java.util.*;
class ReverseStringTest
{
public static void main(String[] args)
{
String input = "abhinaw";
byte [] strAsByteArray = input.getBytes();
byte [] result =
new byte [strAsByteArray.length];
for (int i = 0; i<strAsByteArray.length; i++)
result[i] =
strAsByteArray[strAsByteArray.length-i-1];
System.out.println(new String(result));
}
}
Output:
wanihba
2)Using built in reverse() method of the StringBuilder class:
String class does not have reverse() method, we need to convert the input string to StringBuilder, which is achieved by using the append method of StringBuilder. After that, print out the characters of the reversed string by scanning from the first till the last index.
Sample Code:
import java.lang.*;
import java.io.*;
import java.util.*;
class ReverseStringTest
{
public static void main(String[] args)
{
String input = "abhinaw";
StringBuilder input1 = new StringBuilder();
input1.append(input);
input1 = input1.reverse();
// print reversed String
for (int i=0; i<input1.length(); i++)
System.out.print(input1.charAt(i));
}
}
Output:
wanihba
3) Converting String to character array:
The user input the string to be reversed.
Method:
1. First, convert String to character array
by using the built in Java String class
method toCharArray().
2. Then, scan the string from end to start,
and print the character one by one.
SampleCode:
import java.lang.*;
import java.io.*;
import java.util.*;
class ReverseString
{
public static void main(String[] args)
{
String input = "Abhinaw";
char[] try1 = input.toCharArray();
for (int i = try1.length-1; i>=0; i--)
System.out.print(try1[i]);
}
}
Output: wanihbA
4) Convert the input string into character array by using the toCharArray():
Convert the input string into character array by using the toCharArray() – built in method of the String Class. Then, scan the character array from both sides i.e from the start index (left) as well as from last index(right) simultaneously.
1. Set the left index equal to 0 and right
index equal to the length of the string -1.
2. Swap the characters of the start index
scanning with the last index scanning
one by one. After that, increase the left
index by 1 (left++) and decrease the right
by 1 i.e., (right--) to move on to the next
characters in the character array .
3. Continue till left is less than or equal to
the right.
SampleCode:
import java.lang.*;
import java.io.*;
import java.util.*;
class ReverseStringTest
{
public static void main(String[] args)
{
String input = "Abhinaw Tripathi";
char[] temparray = input.toCharArray();
int left, right=0;
right = temparray.length-1;
for (left=0; left < right ; left++ ,right--)
{
char temp = temparray[left];
temparray[left] = temparray[right];
temparray[right]=temp;
}
for (char c : temparray)
System.out.print(c);
System.out.println();
}
}
Output:
ihtapirT wanihbA
5)Using ArrayList object:
Convert the input string into the character array by using toCharArray() built in method. Then, add the characters of the array into the ArrayList object. Java also has built in reverse() method for the Collections class. Since Collections class reverse() method takes a list object , to reverse the list , we will pass the LinkedList object which is a type of list of characters.
1. We copy String contents to an object
of ArrayList.
1. We create a ListIterator object by using
the listIterator() method on the LinkedList
object.
2. ListIterator object is used to iterate over
the list.
3. ListIterator object helps us to iterate
over the reversed list and print it one
by one to the output screen.
SampleCode:
import java.lang.*;
import java.io.*;
import java.util.*;
class ReverseStringTesting
{
public static void main(String[] args)
{
String input = "Abhinaw Tripathi";
char[] hello = input.toCharArray();
List<Character> trial1 = new ArrayList<>();
for (char c: hello)
trial1.add(c);
Collections.reverse(trial1);
ListIterator li = trial1.listIterator();
while (li.hasNext())
System.out.print(li.next());
}
}
Output: ihtapirT wanihbA
Ans: its very easy though and very popular question in interview.So thought of giving my inputs
on it.
Examples:
Input : abhinaw
Output : wanihba
Input: Abhinaw Tripathi
Output: ihtapirT wanihbA
Before,dig in would like to tell you some interesting facts about String and StringBuffer classes:
1. Objects of String are immutable.
2. String class in Java does not have reverse() method, however StringBuilder class has built in reverse() method.
3. StringBuilder class do not have toCharArray() method, while String class does have toCharArray() method.
So the first ways is using:
1)Converting String into Bytes:
getBytes() method is used to convert the input string into bytes[].
Method:
1. Create a temporary byte[] of length equal
to the length of the input string.
2. Store the bytes (which we get by using
getBytes() method) in reverse order into
the temporary byte[] .
3. Create a new String abject using byte[] to
store result.
Sample Code:
import java.lang.*;
import java.io.*;
import java.util.*;
class ReverseStringTest
{
public static void main(String[] args)
{
String input = "abhinaw";
byte [] strAsByteArray = input.getBytes();
byte [] result =
new byte [strAsByteArray.length];
for (int i = 0; i<strAsByteArray.length; i++)
result[i] =
strAsByteArray[strAsByteArray.length-i-1];
System.out.println(new String(result));
}
}
Output:
wanihba
2)Using built in reverse() method of the StringBuilder class:
String class does not have reverse() method, we need to convert the input string to StringBuilder, which is achieved by using the append method of StringBuilder. After that, print out the characters of the reversed string by scanning from the first till the last index.
Sample Code:
import java.lang.*;
import java.io.*;
import java.util.*;
class ReverseStringTest
{
public static void main(String[] args)
{
String input = "abhinaw";
StringBuilder input1 = new StringBuilder();
input1.append(input);
input1 = input1.reverse();
// print reversed String
for (int i=0; i<input1.length(); i++)
System.out.print(input1.charAt(i));
}
}
Output:
wanihba
3) Converting String to character array:
The user input the string to be reversed.
Method:
1. First, convert String to character array
by using the built in Java String class
method toCharArray().
2. Then, scan the string from end to start,
and print the character one by one.
SampleCode:
import java.lang.*;
import java.io.*;
import java.util.*;
class ReverseString
{
public static void main(String[] args)
{
String input = "Abhinaw";
char[] try1 = input.toCharArray();
for (int i = try1.length-1; i>=0; i--)
System.out.print(try1[i]);
}
}
Output: wanihbA
4) Convert the input string into character array by using the toCharArray():
Convert the input string into character array by using the toCharArray() – built in method of the String Class. Then, scan the character array from both sides i.e from the start index (left) as well as from last index(right) simultaneously.
1. Set the left index equal to 0 and right
index equal to the length of the string -1.
2. Swap the characters of the start index
scanning with the last index scanning
one by one. After that, increase the left
index by 1 (left++) and decrease the right
by 1 i.e., (right--) to move on to the next
characters in the character array .
3. Continue till left is less than or equal to
the right.
SampleCode:
import java.lang.*;
import java.io.*;
import java.util.*;
class ReverseStringTest
{
public static void main(String[] args)
{
String input = "Abhinaw Tripathi";
char[] temparray = input.toCharArray();
int left, right=0;
right = temparray.length-1;
for (left=0; left < right ; left++ ,right--)
{
char temp = temparray[left];
temparray[left] = temparray[right];
temparray[right]=temp;
}
for (char c : temparray)
System.out.print(c);
System.out.println();
}
}
Output:
ihtapirT wanihbA
5)Using ArrayList object:
Convert the input string into the character array by using toCharArray() built in method. Then, add the characters of the array into the ArrayList object. Java also has built in reverse() method for the Collections class. Since Collections class reverse() method takes a list object , to reverse the list , we will pass the LinkedList object which is a type of list of characters.
1. We copy String contents to an object
of ArrayList.
1. We create a ListIterator object by using
the listIterator() method on the LinkedList
object.
2. ListIterator object is used to iterate over
the list.
3. ListIterator object helps us to iterate
over the reversed list and print it one
by one to the output screen.
SampleCode:
import java.lang.*;
import java.io.*;
import java.util.*;
class ReverseStringTesting
{
public static void main(String[] args)
{
String input = "Abhinaw Tripathi";
char[] hello = input.toCharArray();
List<Character> trial1 = new ArrayList<>();
for (char c: hello)
trial1.add(c);
Collections.reverse(trial1);
ListIterator li = trial1.listIterator();
while (li.hasNext())
System.out.print(li.next());
}
}
Output: ihtapirT wanihbA
No comments:
Post a Comment