Tuesday, October 13, 2015

[7.10] Reverse a String

1. Implementation
This approach, while fine, does require a large amount of memory. It needs to hold the original
String and the StringBuilder in memory. This could be problematic if you were reversing some

data of several gigabytes in size


// #1

public static String reverse(final String s)
{
    final StirngBuilder sb = new StringBuilder (s.length());
    for (int i = s.length() -1 ; i >=0; i--)
        sb.append(s.charAt(i));

 
     return sb.toStirng();

}


// #2

// Time:O(n), Space:O(n) char[]

public static reverse (final String s)
{
     char[] charArray = s.toCharArray();
     reverse( charArray, 0 , charArray.length-1); 
     return new String( charArray );
}
// time :O(n)
private reverse( char[] chararr, int l, int r)
{ 
   while ( l < r)
   {
         char tmp = chararr[l];
         chararr[l] = chararr[r];
         chararr[r] = tmp;
         l++; 
         r--;
   }   
}

// #3
public static String inPlaceReverse(final string s)
{
     final StringBuidler sb= new StringBuidler(s); 
     for (int i =0; i < sb.length()/2; i++)
     {
           final char tmp = sb.charAt(i);
           final int otherEnd = sb.length()-i-1;
           sb.setchatAt(i, sb.charAt(otherEnd));
           sb.setCharAt(otherEnd, tmp);
     }

     
     return sb.toString();

    
}

No comments:

Post a Comment