今日份算法 — 520. 检测大写字母 551. 学生出勤纪录 I
更多算法实现见:https://github.com/Erindcl/Daily-algorithm 520. 检测大写字母给定一个单词,你需要判断单词的大写使用是否正确。我们定义,在以下情况时,单词的大写用法是正确的:全部字母都是大写,比如"USA"。单词中所有字母都不是大写,比如"leetcode"。如果单词不只含有一个字母,只有首字母大写, 比如 &q
·
更多算法实现见: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;
};
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)