zoukankan      html  css  js  c++  java
  • 551. Student Attendance Record I【easy】

    551. Student Attendance Record I【easy】

    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

    解法一:

     1 class Solution {
     2 public:
     3     bool checkRecord(string s) {
     4         int num_a = 0;
     5         
     6         for (int i = 0; i < s.length(); ++i) {
     7             if (s[i] == 'A') {
     8                 if (++num_a > 1) {
     9                     return false;
    10                 }
    11             }
    12             
    13             if (i > 0 && i < s.length() - 1 
    14                 && s[i] == 'L' && s[i - 1] == 'L' && s[i + 1] == 'L') {
    15                 return false;
    16             }
    17         }
    18         
    19         return true;
    20     }
    21 };

    解法二:

     1 public boolean checkRecord(String s) {
     2         int countA=0;
     3         int continuosL = 0;
     4         int charA = 'A';
     5         int charL ='L';
     6         for(int i=0;i<s.length();i++){
     7             if(s.charAt(i) == charA){
     8                 countA++;
     9                 continuosL = 0;
    10             }
    11             else if(s.charAt(i) == charL){
    12                 continuosL++;
    13             }
    14             else{
    15                 continuosL = 0;
    16             }
    17             if(countA >1 || continuosL > 2 ){
    18                 return false;
    19             }
    20         }
    21         return true;
    22 
    23     }

    参考@rakeshuky 的代码。

    解法三:

     1 public boolean checkRecord(String s) {
     2     int acount=0;
     3     int lcount=0;
     4     for(char c : s.toCharArray()) {
     5         if(c=='L') {
     6             lcount++;
     7         }
     8         else {
     9             lcount=0;
    10             if(c=='A') {
    11                 acount++;
    12             }
    13         }
    14         if(acount>1 || lcount>=3) {
    15             return false;
    16         }
    17     }
    18     return true;
    19    }

    参考@labs 的代码。

  • 相关阅读:
    设计模式的读书笔记
    腾讯历年笔试题
    原始套接字的简单tcp包嗅探
    一些有意思,有深度,容易错的代码收集
    sizeof的用法的一些归纳
    一道有趣的题目
    C++的一些设计注意点
    Gazebo Ros入门
    机器学习之多变量线性回归(Linear Regression with multiple variables)
    机器学习之单变量线性回归(Linear Regression with One Variable)
  • 原文地址:https://www.cnblogs.com/abc-begin/p/7583324.html
Copyright © 2011-2022 走看看