Table of Contents
Problem statement
In the problem ” Student Attendance Record I” we are given a string where each letter represents the attendance detail of a student. The interpretation of letters in the string is as follows:
- ‘A’ means absent.
- ‘P’ means present.
- ‘L’ means late
The student will be rewarded based on his attendance if he is not absent for more than one day or not late continuously for more than two days. Our task is to determine if the student will be rewarded or not.
Example
str="PPALLP"
true
Explanation:
As the student is not absent for more than one day and not late continuously for more than two days so he must be rewarded.
Approach for Student Attendance Record I Leetcode Solution
Implementation
This is a basic implementation problem. We need to find out if the student will be rewarded or not. So to reward the student we need to check if he is not absent for more than one day and not late continuously for more than two days. We will follow these steps to perform this check:
- Initialize number of ‘A’ count and ‘L’ count by zero
- Traverse the complete string.
- If the current character is ‘A’ then increment the count of ‘A’ by one.
- If the current character is ‘L’ then increment the count of ‘L’ by one.
- Otherwise, the count of ‘L’ becomes zero.
- Now check if the count of ‘A’ is greater than or equal to 2 or the count of ‘L’ is greater than 2. If the condition is true return false.
- In the end, if all conditions are satisfied then return true.
C++ code for Student Attendance Record 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 code for Student Attendance Record 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
Complexity Analysis of Student Attendance Record I Leetcode Solution
Time complexity
The time complexity of the above code is O(n) because we are traversing the string only once. Here n is the length of the given string.
Space complexity
The space complexity of the above code is O(1) because we are using only a variable to store answer.