Εγγραφή παρακολούθησης φοιτητών I Λύση Leetcode


Επίπεδο δυσκολίας Εύκολος
Συχνές ερωτήσεις Google
κορδόνι

Δήλωση προβλήματος

Στο πρόβλημα «Εγγραφή φοιτητών παρακολούθησης Ι» μας δίνεται ένα κορδόνι όπου κάθε γράμμα αντιπροσωπεύει τη λεπτομέρεια παρουσίας ενός μαθητή. Η ερμηνεία των γραμμάτων στη συμβολοσειρά έχει ως εξής:

  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 Solution

Χρόνος πολυπλοκότητας

Η χρονική πολυπλοκότητα του παραπάνω κώδικα είναι O (n) γιατί διασχίζουμε τη συμβολοσειρά μόνο μία φορά. Εδώ είναι το μήκος της δεδομένης συμβολοσειράς.

Διαστημικότητα

Η πολυπλοκότητα του παραπάνω κώδικα είναι Ο (1) γιατί χρησιμοποιούμε μόνο μια μεταβλητή για να αποθηκεύσουμε την απάντηση.

αναφορές