Запись о посещаемости студентов I Leetcode Solution


Сложный уровень Легко
Часто спрашивают в Google
строка

Постановка задачи

В задаче «Отчет о посещаемости студента I» нам дается строка где каждая буква представляет данные о посещаемости студента. Расшифровка букв в строке следующая:

  1. «А» означает «отсутствует».
  2. «P» означает «присутствует».
  3. 'L' означает поздно

Студент будет вознагражден в зависимости от его посещаемости, если он не отсутствовал более одного дня или не опаздывал непрерывно более двух дней. Наша задача - определить, будет ли ученик вознагражден или нет.

Пример

str="PPALLP"
true

Объяснение:

Запись о посещаемости студентов I Leetcode Solution

Поскольку ученик не отсутствует более одного дня и не опаздывает непрерывно более двух дней, он должен быть вознагражден.

Подход к записи посещаемости студентов I Решение Leetcode

Реализация

Это основная проблема реализации. Нам нужно выяснить, будет ли студент вознагражден или нет. Итак, чтобы вознаградить ученика, нам нужно проверить, не отлучился ли он более одного дня и не опаздывает ли он постоянно более чем на два дня. Чтобы выполнить эту проверку, выполните следующие действия:

  1. Инициализировать количество отсчетов «A» и «L» нулем
  2. Пройдите всю строку.
    1. Если текущий символ - «А», увеличьте счетчик «А» на единицу.
    2. Если текущий символ - «L», увеличьте счетчик «L» на единицу.
    3. В противном случае счетчик «L» становится равным нулю.
    4. Теперь проверьте, является ли счетчик «A» большим или равным 2 или счетчик «L» больше 2. Если условие истинно, верните false.
  3. В конце концов, если все условия выполнены, верните true.

Код 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

Сложность времени

Временная сложность приведенного выше кода О (п) потому что мы обходим строку только один раз. Здесь n - длина данной строки.

Пространство сложности

Пространственная сложность приведенного выше кода равна O (1) потому что мы используем только переменную для хранения ответа.

дело