Mündəricat
Problem bəyanat
Problemdə ”Tələbə Davamı Qeydləri I” bizə verilir sim burada hər məktub bir tələbənin davamiyyət detalını əks etdirir. Sətirdəki hərflərin təfsiri belədir:
- 'A' yox deməkdir.
- 'P' indiki deməkdir.
- 'L' gec deməkdir
Tələbə bir gündən çox olmamış və ya iki gündən çox fasiləsiz gecikməmiş olduğu təqdirdə iştirakına görə mükafatlandırılacaqdır. Bizim vəzifəmiz şagirdin mükafatlandırılıb-mükafatlandırılmayacağını müəyyənləşdirməkdir.
misal
str="PPALLP"
true
Explanation:
Tələbə bir gündən çox yox, iki gündən çox fasiləsiz gecikmədiyi üçün mükafatlandırılmalıdır.
Tələbə davamiyyəti rekorduna yanaşma I Leetcode Solution
Həyata keçirilməsi
Bu, əsas tətbiqetmə problemidir. Tələbənin mükafatlandırılıb-mükafatlandırılmayacağını öyrənməliyik. Beləliklə, tələbəni mükafatlandırmaq üçün bir gündən çox yox, iki gündən çox fasiləsiz gecikməməsini yoxlamalıyıq. Bu yoxlamanı aparmaq üçün aşağıdakı addımları izləyəcəyik:
- 'A' sayının və 'L' sayının sıfır sayını başlayın
- Tam simli keçin.
- Mövcud xarakter 'A' olduqda, 'A' sayını bir artırın.
- Mövcud xarakter 'L' olduqda, 'L' sayını bir artırın.
- Əks təqdirdə, 'L' sayı sıfır olur.
- İndi 'A' sayının 2-dən çox və ya bərabər olduğunu və ya 'L' sayının 2-dən böyük olub olmadığını yoxlayın. Əgər şərt doğrudursa false qayıdır.
- Sonda bütün şərtlər yerinə yetirilirsə, gerçəkləşir.
Tələbə Davamı Qeydləri I üçün C ++ kodu
#include <bits/stdc++.h> using namespace std; bool checkRecord(string s) { int a=0, l=0; for(int i=0;i<s.size();i++) { if(s[i]=='A') a++; if(s[i]=='L') l++; else l=0; if(a>=2||l>2) return false; } return true; } int main() { string attendence ="PPALLP"; bool ans=checkRecord(attendence); cout<<boolalpha; cout<<ans<<endl; return 0; }
true
Tələbə Davamı Qeydləri I üçün Java kodu
import java.util.Arrays; import java.util.Set ; import java.util.HashSet; import java.util.*; public class Tutorialcup { public static boolean checkRecord(String s) { int a=0, l=0; for(int i=0;i<s.length();i++) { if(s.charAt(i)=='A') a++; if(s.charAt(i)=='L') l++; else l=0; if(a>=2||l>2) return false; } return true; } public static void main(String[] args) { String attendence ="PPALLP"; boolean ans=checkRecord(attendence); System.out.println(ans); } }
true
Tələbə davamiyyəti rekordunun I Leetcode həllinin mürəkkəbliyinin təhlili
Zaman mürəkkəbliyi
Yuxarıdakı kodun zaman mürəkkəbliyi O (n) çünki simdən cəmi bir dəfə keçirik. Burada n verilən sətrin uzunluğudur.
Kosmik mürəkkəblik
Yuxarıdakı kodun kosmik mürəkkəbliyi O (1) çünki cavabı saxlamaq üçün yalnız dəyişəndən istifadə edirik.