Given a string S of size N, the task is to sort the string without changing the place of vowels.
Examples:
Input: S = "example" Output: elampxe Explanation: The consonants are xmpl. After sorting it becomes lmpx. Now update the string after replacing each consonants with sorted consonants. Input: S = "Cplusplus" Output: Clluppsus
Approach:
To solve the above problem, follow the steps below:
- Traverse the string S, copy all consonants of string S to another string say, temp.
- Sort temp in alphabetical order.
- Now again traverse the string S, and replace each consonant of string S with the temp[i], and increment i.
Below is the implementation of the above approach:
// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
// Function to sort the string without
// changing the place of vowels
void sortStr(string S)
{
// Length of string S
int N = S.size();
string temp = "";
// Traverse the string S
for (int i = 0; i < N; i++) {
if (S[i] != 'a' && S[i] != 'e' && S[i] != 'i'
&& S[i] != 'o' && S[i] != 'u')
temp += S[i];
}
// Sort string temp
if (temp.size())
sort(temp.begin(), temp.end());
// Pointing to starting index of temp
int ptr = 0;
// Traverse the string S
for (int i = 0; i < N; i++) {
if (S[i] != 'a' && S[i] != 'e' && S[i] != 'i'
&& S[i] != 'o' && S[i] != 'u')
S[i] = temp[ptr++];
}
cout << S;
}
// Driver Code
int main()
{
string S = "example";
sortStr(S);
return 0;
}
Output:
elampxe
Time Complexity: O(nlogn)
Auxiliary Space: O(n)
Please write comments if you find anything incorrect. A gentle request to share this topic on your social media profile.
