رشته ای را با کاراکترهایی که تعداد عجیب و غریب دارند راه حل کد ایجاد کنید


سطح دشواری ساده
اغلب در دی دی
رشته

بیان مسأله

در این مشکل ، یک طول به ما داده می شود. ما باید a ایجاد کنیم رشته که همه کاراکترها تعداد دفعات عجیب و غریب دارد. به عنوان مثال ، aaaaab یک رشته معتبر است زیرا count (a) = 5 و count (b) = 1.
اما ، aaabbc در اینجا یک رشته معتبر نیست زیرا count (b) = 2 که یک عدد زوج است.

مثال

n = 4
"pppz"

شرح:

"pppz" یک رشته معتبر است زیرا کاراکتر "p" سه بار رخ می دهد و شخصیت "z" یک بار اتفاق می افتد. توجه داشته باشید که بسیاری از رشته های معتبر دیگر مانند "آه" و "عشق" وجود دارد.

n = 2
"xy"

شرح:

"xy" یک رشته معتبر است زیرا شخصیت های "x" و "y" یک بار اتفاق می افتند. توجه داشته باشید که بسیاری از رشته های معتبر دیگر مانند "ag" و "ur" وجود دارد.

روش

ما می توانیم در اینجا از یک ترفند استفاده کنیم.
اگر طول رشته عدد فرد باشد ، می توانیم از یک کاراکتر واحد برای ایجاد رشته استفاده کنیم رشته، و اگر طول ورودی زوج باشد ، می توانیم یک رشته داشته باشیم که فقط دو کاراکتر داشته باشد.
یک کاراکتر n-1 بار اتفاق می افتد (که یک عدد فرد خواهد بود زیرا n حتی در اینجا است) و یک بار کاراکتر anoter (که البته تعداد عجیب و غریب است).

به عنوان مثال n = 4 ، خروجی ما aaab خواهد بود
و اگر n = 3 باشد ، خروجی ما aaa خواهد بود

رشته ای را با کاراکترهایی که تعداد عجیب و غریب دارند راه حل کد ایجاد کنید
ما فقط از کاراکترهای a و b در راه حل خود استفاده می کنیم ، در صورت تمایل گزینه های بیشتری برای شخصیت وجود دارد.

پیاده سازی

برنامه 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) است.