د هغه حروفونو سره سټینګ رامینځته کړئ چې د لیوټ کوډ حل سره عجيبه حساب لري


مشکل کچه په اسانۍ سره
په مکرر ډول دننه پوښتل کیږي ډي آئي ډي
تار

ستونزه بیان

پدې ستونزه کې ، موږ ته اوږدوالی راکول کیږي. موږ باید پیدا کړو تار چې دا ټول حروف یو ډیر عجیب وخت لري. د مثال په توګه ، aaaaab یو درست تار دی ځکه چې شمیره (a) = 5 او د (b) = 1 شمیره.
مګر ، aaabbc دلته معتبر تار ندی ځکه چې شمیره (b) = 2 کوم چې حتی شمیره ده.

بېلګه

n = 4
"pppz"

وضاحت:

“pppz” یو معتبر تار دی ځکه چې د 'p' کرکټر درې ځله پېښېږي او د 'z' کرکټر یو ځل پېښېږي. په یاد ولرئ چې نور ډیر معتبر تارونه لکه "اوه" او "مینه" شتون لري.

n = 2
"xy"

وضاحت:

"xy" یو معتبر تار دی ځکه چې 'x' او 'y' توری یوځل پېښېږي. په یاد ولرئ چې ډیری نور معتبر تارونه لکه "Ag" او "ur" شتون لري.

او کړنلاره

موږ کولی شو دلته یو چال وکاروو.
که د تار اوږدوالی عجیب شمیره وي نو بیا موږ کولی شو د جوړولو لپاره په اوږدو کې یو واحد کرکټر وکاروو تار، او که چیرې د ننوت اوږدوالی حتی شمیره وي نو بیا موږ کولی شو داسې تار پیدا کړو چې یوازې دوه حروف لري
یو کرکټر د n-1 ځل پیښ کیږي (کوم چې به یو عجیب شمیره وي ځکه چې n حتی دلته دی) او انوټر کریکټ یوځل یوځل (کوم چې البته یو عجیب شمیر دی).

د مثال په توګه n = 4 ، زموږ محصول به aaab وي
او که چیرې n = 3 ، زموږ محصول به aaa وي

د هغه حروفونو سره سټینګ رامینځته کړئ چې د لیوټ کوډ حل سره عجيبه حساب لري
موږ یوازې زموږ په حل کې د الف او ب حرفونه کاروو ، دلته د حرفو ډیر اختیارونه شتون لري که تاسو وغواړئ.

تطبیق

C ++ برنامه د داسې سټرونو سره سټینګ رامینځته کولو لپاره چې د لیټکوډ حل سره عجیب حساب لري

#include <bits/stdc++.h>
using namespace std;

string generateTheString(int n) 
{
    string str;
    if(n%2==0)
    {
        for(int i=0;i<n-1;i++)  str.push_back('a');
        str.push_back('b');
    }
    else
    {
        for(int i=0;i<n;i++)  str.push_back('a');
    }
    return str;
}

int main() 
{
    int n=5;
    cout<<  generateTheString(n)   << endl;
    return 0; 
}
aaaaa

د جاوا برنامې د داسې سټرونو سره سټینګ رامینځته کولو لپاره چې د لیټکوډ حل سره عجیب حساب لري

class Rextester 
{
    public static String generateTheString(int n) 
    {
        StringBuilder sb=new StringBuilder();

        if(n%2==0)
        {
            for(int i=0;i<n-1;i++)sb.append('a');
            sb.append('b');
        }
        else
        {
            for(int i=0;i<n;i++)sb.append('a');
        }

        return sb.toString();
    }

    public static void main(String[]args)
    {
        int length=5;
        System.out.println(generateTheString(length));
    }
}
aaaaa

د هغه خطونو سره د تار پیدا کولو لپاره د پیچلتیا تحلیل چې د لیټکوډ حل سره عجیب حساب لري

د وخت پیچلتیا

O (n): موږ د اوږدوالي لپاره په مستقیم ډول تکرار کوو چې یوازې یوځل ورکړل شوي. نو ځکه ، د وخت بشپړتیا به O (n) وي.

د ځای پیچلتیا 

O (n): موږ زموږ د محصول سټینګ چمتو کوو ، نو موږ د ورکړل شوي اوږدوالي اضافي ځای کار کوو. نو ځکه ، د ځای پیچلتیا هم O (n) ده.