შექმენით სიმები სიმბოლოებით, რომლებსაც აქვთ უცნაური რიცხვების Leetcode ამოხსნა


Რთული ტური Easy
ხშირად ეკითხებიან დიდი
სიმებიანი

პრობლემის განცხადება

ამ პრობლემის დროს, ჩვენ გვაძლევენ სიგრძეს. ჩვენ უნდა გამოვიმუშავოთ ა სიმებიანი რომელსაც აქვს ყველა სიმბოლო კენტიჯერ. მაგალითად, 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 აქ არის ლუწი) და anoter სიმბოლო მხოლოდ ერთხელ (რაც, რა თქმა უნდა, უცნაურია).

მაგალითად n = 4, ჩვენი გამომავალი იქნება aaab
და თუ n = 3, ჩვენი გამომავალი იქნება aaa

შექმენით სიმები სიმბოლოებით, რომლებსაც აქვთ უცნაური რიცხვების Leetcode ამოხსნა
ჩვენ მხოლოდ ვიყენებთ a და b სიმბოლოებს ჩვენს ამოხსნაში, სიმბოლოების მეტი ვარიანტი არსებობს, თუ გსურთ.

განხორციელება

C ++ პროგრამა სტრიქონის შესაქმნელად სიმბოლოებით, რომლებსაც აქვთ უცნაური რიცხვების Leetcode ამოხსნა

#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

ჯავა პროგრამა სიმების სიმბოლოების შესაქმნელად, რომლებსაც აქვთ უცნაური დათვლა Leetcode ამოხსნა

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

სირთულის ანალიზი სიმების შესაქმნელად სიმბოლოებით, რომლებსაც აქვთ უცნაური რიცხვები Leetcode ამოხსნა

დროის სირთულე

O (n): ჩვენ ხაზობრივად ვიმეორებთ მხოლოდ ერთხელ მოცემულ სიგრძეს. ამიტომ, დროის სისრულე იქნება O (n).

სივრცის სირთულე 

O (n): ჩვენ ვქმნით ჩვენს გამომავალ სტრიქონს, ამიტომ ვიყენებთ მოცემულ სიგრძის დამატებით ადგილს. მაშასადამე, სივრცის სირთულე ასევე არის O (n).