Leetcode həllini qəribə sayan simvollarla bir simli yaradın

Çətinlik səviyyəsi Asan
Tez-tez soruşulur Didi
alqoritmlər kodlaşdırma müsahibə müsahibə hazırlığı LeetCode LeetCodeSolutions SimBaxılıb 108

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

Problem bəyanat

Bu problemdə bizə bir uzunluq verilir. A yaratmalıyıq sim bütün simvolları tək sayda olan. Məsələn, aaaaab etibarlı bir sətir, çünki count (a) = 5 və count (b) = 1.
Lakin, aaabbc burada düzgün bir sətir deyil, çünki cəmi (b) = 2 olan cüt saydır.

misal

n = 4
"pppz"

Explanation:

"Pppz" etibarlı bir simvoldur, çünki 'p' işarəsi üç dəfə, 'z' işarəsi bir dəfə baş verir. Diqqət yetirin ki, “ohhh” və “love” kimi bir çox etibarlı simlər var.

n = 2
"xy"

Explanation:

'X' və 'y' simvolları bir dəfə meydana gəldiyindən "xy" etibarlı bir sətirdir. Qeyd edək ki, “ag” və “ur” kimi bir çox başqa etibarlı simlər var.

Yanaşma

Burada bir hiylə istifadə edə bilərik.
Sətrin uzunluğu tək rəqəmdirsə, yaratmaq üçün bir simvol istifadə edə bilərik simvə giriş uzunluğu cüt ədəddirsə, yalnız iki simvoldan ibarət bir simli yarada bilərik.
N-1 dəfə baş verən bir simvol (tək rəqəm olacaq, çünki burada da bərabərdir) və anoter xarakter yalnız bir dəfə (əlbəttə ki, tək saydır).

Məsələn n = 4, çıxışımız aaab olacaqdır
və n = 3 olarsa, çıxışımız aaa olacaqdır

Leetcode həllini qəribə sayan simvollarla bir simli yaradınPin
həllimizdə yalnız a və b simvollarından istifadə edirik, istəsəniz daha çox simvol seçimi var.

Həyata keçirilməsi

Tək kod sayma həllini göstərən simvollarla simli yaratmaq üçün C ++ proqramı

#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

Qeyri-Tək Sayma Kodu Həlli olan Simvollu Bir Simli Yaratmaq üçün Java Proqramı

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

Tək nömrəli lekod həllini sayan simvollarla simli yaratmaq üçün mürəkkəblik analizi

Zamanın mürəkkəbliyi

O (n): Yalnız bir dəfə verilən uzunluğu doğrusal şəkildə təkrarlayırıq. Bu səbəbdən zaman uyğunluğu O (n) olacaqdır.

Kosmik Mürəkkəblik 

O (n): Çıxış simimizi yaradırıq, buna görə verilən əlavə bir uzunluq boşluğundan istifadə edirik. Buna görə kosmik mürəkkəblik də O (n) -dir.

Crack Sistemi Dizayn Müsahibələri
Translate »
1