更多算法实现见:https://github.com/Erindcl/Daily-algorithm

 

520. 检测大写字母

  • 给定一个单词,你需要判断单词的大写使用是否正确。
  • 我们定义,在以下情况时,单词的大写用法是正确的:
  • 全部字母都是大写,比如"USA"。
  • 单词中所有字母都不是大写,比如"leetcode"。
  • 如果单词不只含有一个字母,只有首字母大写, 比如 "Google"。
  • 否则,我们定义这个单词没有正确使用大写字母。

代码如下:

var detectCapitalUse = function(word) {
    var reg1 = /[a-z]+/g,  // 全是小写字母
        reg2 = /[A-Z]+/g,  // 全是大写字母
        reg3 = /^[A-Z][a-z]{1,}$/g;  // 首字母大写其余字母小写
        flag = false;
    if (!reg1.test(word)) {
        flag = true;
    }
    if (!reg2.test(word)) {
        flag = true;
    }
    if (reg3.test(word)) {
        flag = true;
    }
    return flag;
};

其他实现:

var detectCapitalUse = function(word) {
    const len=word.length;
    
    if(len<2){
        return true;
    }

    //第一个字母的大写
    if(word.charCodeAt(0)<96){
        //第二个字母是大写
        if(word.charCodeAt(1)<96){
            for(let i=2;i<len;i++){
                if(word.charCodeAt(i)>96){
                    return false;
                }
            }
        }else{ // 第二个字母是小写
            for(let i=2;i<len;i++){
                if(word.charCodeAt(i)<96){
                    return false;
                }
            }
        }
    }else{
        for(let i=1;i<len;i++){
            if(word.charCodeAt(i)<96){
                return false;
            }
        }
    }
    
    return true;
};

551. 学生出勤纪录 I

  • 给定一个字符串来代表一个学生的出勤纪录,这个纪录仅包含以下三个字符:
  • 'A' : Absent,缺勤
  • 'L' : Late,迟到
  • 'P' : Present,到场
  • 如果一个学生的出勤纪录中不超过一个'A'(缺勤)并且不超过两个连续的'L'(迟到),那么这个学生会被奖赏。
  • 你需要根据这个学生的出勤纪录判断他是否会被奖赏。

代码如下:

var checkRecord = function(s) {
    var countA = 0, countL = 0, len = s.length;
    if (len <= 1) {
        return true;
    }
    if (s[0] == "A") {
        countA = 1;
    }
    for (let i = 1; i < len; i++) {
        if (s[i] == "A") {
            countA++;
        }
        if (i+1 < len) {
            if (s.slice(i-1,i+2) == "LLL") {
                countL++;
            }
        }
        
    }
    return countA <= 1 && countL == 0;
};

其他实现:

var checkRecord = function(s) {
    var countA = 0;
      for (var i = 0; i < s.length; i++) {
        if ( s[i] == "A" ) {
          countA++;
        }
        if (s[i] == "L" && s[i+1] == "L" && s[i+2] == "L") {
          return false;
        }
      }
      if (countA > 1 ) {
        return false;
      }
      return true;
};

 

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐