2018年4月5日 星期四

[LeetCode] 551. Student Attendance Record I

轉自LeetCode

You are given a string representing an attendance record for a student. The record only contains the following three characters:
  1. 'A' : Absent.
  2. 'L' : Late.
  3. 'P' : Present.
A student could be rewarded if his attendance record doesn't contain more than one 'A' (absent) or more than two continuous 'L' (late).
You need to return whether the student could be rewarded according to his attendance record.
Example 1:
Input: "PPALLP"
Output: True
Example 2:
Input: "PPALLL"
Output: False
<Solution>

想法如下
  • 去計數A和L的出現次數即可
code如下

C++
class Solution {
public:
bool checkRecord(string s) {
int cntA = 0, cntL = 0;
for(const auto &c : s) {
if(c == 'A') {
++cntA;
cntL = 0;
}
else if(c == 'L') {
++cntL;
}
else {
cntL = 0;
}
if(cntA > 1 || cntL > 2) {
return false;
}
}
return true;
}
};

Java

Java 可以使用 regular expression 來解
class Solution {
public boolean checkRecord(String s) {
return !s.matches(".*LLL.*|.*A.*A.*");
}
}

沒有留言:

張貼留言