Strings: Remove all consecutive duplicates from the string

Problem Statement:

You are given a string S, you have to remove all the consecutive string.

Example

Input: aabb
Output: ab

Solution

The solution is very simple and can be solved using recursion.

Base case will be, if the string is empty return.
else compare the adj character and the present character.

If they are same the characters one to left.

Then call the recursion on string s.
If they are not same, then call the recursion from s+1.

Solution in C++

#include <vector>    
#include <algorithm>  
//visit www.ProDeveloperTutorial.com for 450+ solved questions  
#include <iostream>    
#include <string>
#include <unordered_map>
#include <queue>

using namespace std;


void remove_duplicates(char* str) 
{ 
    //base case
    if (str[0] == '\0') 
        return; 
  
    // if the next adj char are same
    if (str[0] == str[1]) 
    { 
          
        // shift one character to left 
        int i = 0;  
        while (str[i] != '\0') 
        { 
            str[i] = str[i + 1]; 
            i++; 
        } 
  
        remove_duplicates(str); 
    } 
  
    // If the adjacent characters are not same 
    remove_duplicates(str + 1); 
} 
  
int main() 
{ 
    char S1[] = "aabbccaa"; 
    remove_duplicates(S1); 
    cout << "The string after removing duplicates are " << S1 << endl; 
  
    return 0; 
}

Output:

The string after removing duplicates are = abca
Write a Comment

Leave a Comment

Your email address will not be published. Required fields are marked *