In this HackerEarth Greatest String problem solution, You are given a string S and an integer Q. You are allowed to perform at most Q operations on the string. In one operation, you can change any vowel to it's next character (e.g., 'a'->'b', 'e'->'f', 'i'->'j', 'o'->'p', 'u'->'v'). Generate the lexicographically greatest string by performing at most Q operations on string S.


HackerEarth Greatest String problem solution


HackerEarth Greatest String problem solution.

#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define mp make_pair
#define pb push_back
#define si(x) scanf("%d",&x)
#define pi(x) printf("%d\n",x)
#define s(x) scanf("%lld",&x)
#define p(x) printf("%lld\n",x)
#define sc(x) scanf("%s",x)
#define pc(x) printf("%s",x)
#define pii pair<int,int>
#define pll pair<ll,ll>
#define F first
#define S second
#define inf 1e18
#define prec(x) fixed<<setprecision(15)<<x
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define mem(x,y) memset(x,y,sizeof(x))
#define PQG priority_queue< int,std::vector<int>,std::greater<int> >
#define PQL priority_queue< int,std::vector<int>,std::less<int> >
#define PQPL priority_queue<pii ,vector< pii >, less< pii > >
#define PQPG priority_queue<pii ,vector< pii >, greater< pii > >
#define PQPGB priority_queue<pii ,vector< pll >, greater< pll > >
#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL)

using namespace std;

bool isvowel(char c) {
    return (c=='a' || c=='e' || c=='i' || c=='o' || c=='u');
}

int main() {
    #ifndef ONLINE_JUDGE
        freopen("inp.txt","r",stdin);
        //freopen("output.txt","w",stdout);      
    #endif
    int t; cin>>t;
    assert(t>=1 && t<=10);
    while(t--) {
        string s; cin>>s;
        int q; cin>>q;
        int n=s.size();
        assert(n>=1 && n<=100000);
        assert(q>=0 && q<=100000);
        for(int i=0;i<n;i++) {
            if(q>0) {
                if(isvowel(s[i])) {
                    int x=(s[i]-'a')+1;
                    s[i]=char(x+'a');
                    q--;
                }
            } 
        }
        cout<<s<<endl;
    }


    return 0;
}


Second solution

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    assert(cin>>t);
    assert(t>=1 && t<=1e1);
    while(t--)
    {
        string s;
        assert(cin>>s);
        assert(s.size()>=1 && s.size()<=1e5);
        int q;
        assert(cin>>q);
        assert(q>=0 && q<=1e5);
        int cnt=0;
        for(int i=0;i<s.size();i++)
        {
            assert(s[i]>='a' && s[i]<='z');
            if(s[i]=='a' || s[i]=='e' || s[i]=='i' || s[i]=='o' || s[i]=='u')
            {
                if(cnt<q)
                {
                    s[i]=(char)(s[i]+1);
                    cnt++;
                }
            }
        }
        cout<<s<<"\n";
    }
    return 0;
}