Skip to content
Related Articles
Final string after performing given operations
• Last Updated : 13 May, 2019

Given a string str containing only characters x and y, the task is to perform the following operations while possible:
Find an index such that s[i] = ‘x’ and s[i+1] = ‘y’ and delete both the characters s[i] and s[i+1], if no such index is found then find an index such that s[i] = ‘y’ and s[i+1] = ‘x’ and swap(s[i], s[i+1]).
Print the final string after performing the given operation.

Examples:

Input: str = “xyyxx”
Output: x
Step 1: yxx (xy got deleted)
Step 2: xyx (yx got swapped)
Step 3: x (xy got deleted)

Input: str = “xxyyxyy”
Output: y

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: In the final string there will be either only x or only y because if we have both x and y in the string then there would be a point where we have either xy or yx as sub-string.

• If it’s xy, we delete it straight away.
• If it is yx, we reverse it to get xy and then delete it.

Since in each deletion step, one x and one y gets deleted, the final string would have min(x, y) number of x and y characters deleted.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;`` ` `// Function to return the modified string``string printFinalString(string s)``{``    ``int` `i, n;``    ``n = s.length();``    ``int` `x = 0, y = 0;``    ``for` `(i = 0; i < n; i++) {`` ` `        ``// Count number of 'x'``        ``if` `(s[i] == ``'x'``)``            ``x++;`` ` `        ``// Count number of 'y'``        ``else``            ``y++;``    ``}`` ` `    ``string finalString = ``""``;`` ` `    ``// min(x, y) number of 'x' and 'y' will be deleted``    ``if` `(x > y)``        ``for` `(i = 0; i < x - y; i++)``            ``finalString += ``"x"``;``    ``else``        ``for` `(i = 0; i < y - x; i++)``            ``finalString += ``"y"``;`` ` `    ``return` `finalString;``}`` ` `// Driver Program to test above function``int` `main()``{``    ``string s = ``"xxyyxyy"``;``    ``cout << printFinalString(s);``}`

## Java

 `// Java implementation of the approach``class` `GFG``{``// Function to return the modified String``static` `String printFinalString(String s) ``{``    ``int` `i, n;``    ``n = s.length();``    ``int` `x = ``0``, y = ``0``;``    ``for` `(i = ``0``; i < n; i++) ``    ``{`` ` `        ``// Count number of 'x'``        ``if` `(s.charAt(i) == ``'x'``)``        ``{``            ``x++;``        ``} ``// Count number of 'y'``        ``else``        ``{``            ``y++;``        ``}``    ``}`` ` `    ``String finalString = ``""``;`` ` `    ``// min(x, y) number of 'x' and ``    ``// 'y' will be deleted``    ``if` `(x > y) ``    ``{``        ``for` `(i = ``0``; i < x - y; i++)``        ``{``            ``finalString += ``"x"``;``        ``}``    ``} ``    ``else` `    ``{``        ``for` `(i = ``0``; i < y - x; i++) ``        ``{``            ``finalString += ``"y"``;``        ``}``    ``}`` ` `    ``return` `finalString;``}`` ` `// Driver Code``public` `static` `void` `main(String args[])``{``    ``String s = ``"xxyyxyy"``;``    ``System.out.println(printFinalString(s));``}``}`` ` `// This code is contributed ``// by 29AjayKumar`

## Python3

 `# Python 3 implementation of the approach`` ` `# Function to return the modified string``def` `prFinalString(s):``    ``i, n ``=` `0``, ``0``    ``n ``=` `len``(s)``    ``x, y ``=` `0``, ``0``    ``for` `i ``in` `range``(``0``, n):``         ` `        ``# Count number of 'x'``        ``if` `(s[i] ``=``=` `'x'``):``            ``x ``+``=` `1`` ` `        ``# Count number of 'y'``        ``else``:``            ``y ``+``=` `1`` ` `    ``finalString ``=` `""`` ` `    ``# min(x, y) number of 'x' and ``    ``# 'y' will be deleted``    ``if` `(x > y):``        ``for` `i ``in` `range``(``0``, x ``-` `y):``            ``finalString ``+``=` `"x"``    ``else``:``        ``for` `i ``in` `range``(``0``, y ``-` `x):``            ``finalString ``+``=` `"y"`` ` `    ``return` `finalString`` ` `# Driver Code``if` `__name__ ``=``=` `'__main__'``:``    ``s ``=` `"xxyyxyy"``    ``print``(prFinalString(s))`` ` `# This code contributed by 29AjayKumar`

## C#

 `// C# implementation of the approach``using` `System;`` ` `class` `GFG``{``// Function to return the modified String``static` `string` `printFinalString(``string` `s) ``{``    ``int` `i, n;``    ``n = s.Length;``    ``int` `x = 0, y = 0;``    ``for` `(i = 0; i < n; i++) ``    ``{`` ` `        ``// Count number of 'x'``        ``if` `(s[i] == ``'x'``)``        ``{``            ``x++;``        ``} ``// Count number of 'y'``        ``else``        ``{``            ``y++;``        ``}``    ``}`` ` `    ``string` `finalString = ``""``;`` ` `    ``// min(x, y) number of 'x' and ``    ``// 'y' will be deleted``    ``if` `(x > y) ``    ``{``        ``for` `(i = 0; i < x - y; i++)``        ``{``            ``finalString += ``"x"``;``        ``}``    ``} ``    ``else``    ``{``        ``for` `(i = 0; i < y - x; i++) ``        ``{``            ``finalString += ``"y"``;``        ``}``    ``}`` ` `    ``return` `finalString;``}`` ` `// Driver Code``public` `static` `void` `Main()``{``    ``string` `s = ``"xxyyxyy"``;``    ``Console.WriteLine(printFinalString(s));``}``}`` ` `// This code is contributed ``// by Akanksha Rai`

## PHP

 ` ``\$y``)``        ``for` `(``\$i` `= 0; ``\$i` `< ``\$x` `- ``\$y``; ``\$i``++)``            ``\$finalString` `.= ``"x"``;``    ``else``        ``for` `(``\$i` `= 0; ``\$i` `< ``\$y` `- ``\$x``; ``\$i``++)``            ``\$finalString` `.= ``"y"``;`` ` `    ``return` `\$finalString``;``}`` ` `// Driver Code``\$s` `= ``"xxyyxyy"``;``echo` `printFinalString(``\$s``);`` ` `// This code is contributed by ihritik``?>`
Output:
```y
```
My Personal Notes arrow_drop_up