1. 程式人生 > >【兩次過】Lintcode 1178. Student Attendance Record I

【兩次過】Lintcode 1178. Student Attendance Record I

You are given a string representing an attendance record for a student. The record only contains the following three characters:

  • 'A' : Absent.
  • 'L' : Late.
  • '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

輸入測試資料 (每行一個引數)

解題思路1:

直接遍歷即可。

public class Solution {
    /**
     * @param s: a string
     * @return: whether the student could be rewarded according to his attendance record
     */
    public boolean checkRecord(String s) {
        // Write your code here
        int cntA = 0, cntL = 0;
        char[] ss = s.toCharArray();
        
        for(char c : ss){
            if(c == 'A'){
                ++cntA;
                cntL = 0;
            }else if(c == 'L')
                ++cntL;
            else
                cntL = 0;
            
            if(cntA>1 || cntL>2)
                return false;
        }
        
        return true;
    }
}

解題思路2:

使用字串匹配函式。

public class Solution {
    /**
     * @param s: a string
     * @return: whether the student could be rewarded according to his attendance record
     */
    public boolean checkRecord(String s) {
        // Write your code here
        return s.indexOf('A') == s.lastIndexOf('A') && !s.contains("LLL");
    }
}