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.
Mündəricat
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
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.
