top of page
Writer's picturePrateek Chauhan

Recursively remove all adjacent duplicates

In this blog we are discussing a problem asked by paytm, samsung.


Problem:

Given a strings, recursively remove adjacent duplicate characters from the string s. The output string should not have any adjacent duplicates.


Input:

The first line of input contains a string str.


Output:

Print a new line containing the resulting string.


Constraints:

1 <= Length of string <= 50


Example:

Input 1:

programmersdoor


Output 1:

prograersdr


Input 2:

abccabbdadd


Output:

abada

 

Implementation Using C++:

#include <iostream>
#include <string.h>
using namespace std;

// removes all adjacent duplicates from
char* removeAdjacentDuplicate(char* str, int n)
{
	// k maintains the index of next free location in the result
	// and i maintains the current index in the string
	int i, k = 0;
	int len = strlen(str);

	// start from second character
	for (i = 1; i < len; i++)
	{
		// if current char is not same as the
		// previous char, add it to result
		if (str[i - 1] != str[i])
			str[k++] = str[i - 1];
		else
		{
			// remove adjacent duplicates
			while (i < len && str[i - 1] == str[i])
				i++;
		}
	}

	// Add last character to result
	str[k++] = str[i - 1];

	// null terminate the string
	str[k] = '\0';

	if (k != n)
		return removeAdjacentDuplicate(str, k); 
		
	return str;
}

int main()
{
	char str[] = "programmersdoor";
	int n = strlen(str);

	cout <<removeAdjacentDuplicate(str, n);

	return 0;
}
 

Happy Coding!


Follow us on Instagram @programmersdoor

Join us on Telegram @programmersdoor

 

Please write comments if you find any bug in above code/algorithm, or find other ways to solve the same problem.

Follow Programmers Door for more.


111 views0 comments

Recent Posts

See All

Comments


bottom of page