Ուսանողների հաճախումների ռեկորդ I Leetcode լուծում


Դժվարության մակարդակ Հեշտ
Հաճախակի հարցնում են Google
String

Խնդրի հայտարարություն

«Ուսանողների հաճախման ռեկորդը I» խնդրում մեզ տրվում է ա լարային որտեղ յուրաքանչյուր նամակ ներկայացնում է ուսանողի հաճախելու մանրամասնությունը: Տողի մեջ տառերի մեկնաբանությունը հետևյալն է.

  1. «Ա» նշանակում է բացակա:
  2. «P» նշանակում է ներկա:
  3. «L» նշանակում է ուշ

Ուսանողը կպարգևատրվի `ելնելով իր հաճախելուց, եթե մեկ օրից ավելի բացակայում է կամ երկու օրից ավելի անընդմեջ չի ուշանում: Մեր խնդիրն է պարզել `ուսանողը կպարգևատրվի, թե ոչ:

Օրինակ

str="PPALLP"
true

Բացատրությունը.

Ուսանողների հաճախումների ռեկորդ I Leetcode լուծում

Քանի որ ուսանողը մեկ օրից ավելի բացակայում է և երկու օրից ավելի անընդհատ չի ուշանում, ուստի նա պետք է պարգևատրվի:

Ուսանողների հաճախումների ռեկորդի մոտեցում I Leetcode լուծում

Իրականացման

Սա իրականացման հիմնական խնդիր է: Մենք պետք է պարզենք ՝ ուսանողը կպարգևատրվի, թե ոչ: Ուստի ուսանողին պարգևատրելու համար մենք պետք է ստուգենք, արդյոք նա մեկ օրից ավելի բացակայում է, և ոչ ավելի, քան անընդմեջ `ավելի քան երկու օր: Այս ստուգումը կատարելու համար մենք հետևելու ենք այս քայլերին.

  1. Նախաձևացրեք «A» և «L» թվերի քանակը զրոյով
  2. Անցեք ամբողջական տողը:
    1. Եթե ​​ներկայիս նիշը «A» է, ապա «A» - ի քանակը մեկով ավելացրեք:
    2. Եթե ​​ներկայիս նիշը 'L' է, ապա 'L' - ի քանակը մեկով ավելացրեք:
    3. Հակառակ դեպքում, «L» - ի հաշվարկը դառնում է զրոյի:
    4. Այժմ ստուգեք, արդյոք «A» - ի հաշվարկը 2-ից մեծ է կամ հավասար է, կամ «L» - ի քանակը 2-ից մեծ է: Եթե պայմանը իրական է, վերադարձեք կեղծ:
  3. Ի վերջո, եթե բոլոր պայմանները բավարարված են, ապա վերադարձեք իրական:

C ++ ծածկագիր ուսանողների հաճախումների համար I գրառում

#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

Java- ի աշակերտների հաճախումների ռեկորդ I

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

Ուսանողների հաճախումների ռեկորդի բարդության վերլուծություն I Leetcode լուծում

Timeամանակի բարդությունը

Վերոնշյալ ծածկագրի ժամանակի բարդությունն է O (n) քանի որ մենք լարն անցնում ենք միայն մեկ անգամ: Այստեղ n- ը տրված տողի երկարությունն է:

Տիեզերական բարդություն

Վերոնշյալ ծածկագրի տիեզերական բարդությունն է Ո (1) քանի որ մենք պատասխանը պահելու համար օգտագործում ենք միայն փոփոխական:

Սայլակ