Sunday, March 27, 2016

Remove duplicates in a String -- perform in-place replacement


public class RemoveDuplicateCharsInString {

     public static void main (String[] args)
     {
          char[] input1 ="aabbcccdddd".toCharArray();
          char[] input2 ="abbcddaabbcc".toCharArray();
         
          removeDuplicateCharsInString(input1);
          removeDuplicateCharsInString(input2);
         
          System.out.println(input1);
          System.out.println(input2);
     }
     public static void removeDuplicateCharsInString(char[] inputArray)
     {
          if(inputArray == null)
               return;
         
          if(inputArray.length < 2)
               return;

          int originalArrayLength = inputArray.length;
         
          //assumed that we leave the first item in array as is.
          int newDuplicateRemovedArrayTail = 1;
         
          for(int i=1; i < inputArray.length; i++)
          {
               int j = 0;
               for(; j< newDuplicateRemovedArrayTail; j++)
               {
                     if( inputArray[j] == inputArray[i])
                     {
                          // the current char is exists in the new non-duplicate array. so Skip it
                          break;
                     }
               }
               if(j == newDuplicateRemovedArrayTail )
               {
                     //means the above search found no matching in the non-duplicate array.
                     inputArray[newDuplicateRemovedArrayTail++]= inputArray[i];        
               }
          }
          for(int k = newDuplicateRemovedArrayTail ; k < originalArrayLength; k++)
          {   
               //nullify remianing chars.
               inputArray[k]=0;
          }
     }
    
}

No comments:

Post a Comment