Tələbə davamiyyəti qeydləri I Leetcode Solution

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

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:

  1. 'A' yox deməkdir.
  2. 'P' indiki deməkdir.
  3. '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ə davamiyyəti qeydləri I Leetcode SolutionPin

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:

  1. 'A' sayının və 'L' sayının sıfır sayını başlayın
  2. Tam simli keçin.
    1. Mövcud xarakter 'A' olduqda, 'A' sayını bir artırın.
    2. Mövcud xarakter 'L' olduqda, 'L' sayını bir artırın.
    3. Əks təqdirdə, 'L' sayı sıfır olur.
    4. İ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.
  3. 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.

References

Şərh yaz

Translate »