【JS】检测大写字母 #字符串

给定一个单词,你需要判断单词的大写使用是否正确。

我们定义,在以下情况时,单词的大写用法是正确的:

全部字母都是大写,比如"USA"。
单词中所有字母都不是大写,比如"leetcode"。
如果单词不只含有一个字母,只有首字母大写, 比如 “Google”。
否则,我们定义这个单词没有正确使用大写字母。

示例 1:
输入: “USA”
输出: True

示例 2:
输入: “FlaG”
输出: False
注意: 输入是由大写和小写拉丁字母组成的非空单词。


解法一:

通过比较每个字符的Unicode编码进行判断,有以下几种情况
当第0位字符是小写,后面的字符也需要是小写, 如 w, word ,wORD
当第1位字符是小写,后面的字符也需要是小写, 如 h, character ,chAaracter
当第1位字符是大写,后面的字符也需要是大写。 如 P, UPPER ,UPper

  • A-Z 对应的 Unicode 编码是 65 - 90
  • a-z 对应的 Unicode 编码是 97 - 122
// 2018/11/22 上午
var detectCapitalUse = function(word) {
    var uni ,unizero ,unione
    for(var i=1;i<word.length;i++){
        uni = word.charCodeAt(i) 
        unizero=word.charCodeAt(0)
        unione=word.charCodeAt(1)
        if(unizero >= 97 && unizero <= 122){ //第0位小写,后面也需要小写
            if(uni < 97 || uni > 122){
                return false;
            }
        }else if(unione >= 97 && unione <= 122){ //第1位小写,后面也需要小写
            if(uni < 97 || uni > 122){
                return false;
            }
        }else{
            if(uni < 65 || uni > 90){ //否则都是大写
                return false;
            }
        }
    }
    return true;
};

550 / 550 个通过测试用例
执行用时:76 ms

解法二:

字符与字符之间对比大小


var detectCapitalUse = function(word) {
    for(var i=1;i<word.length;i++){
        if(word[0] >= 'a' && word[0] <= 'z'){ 
            if(word[i] < 'a' || word[i] > 'z'){
                return false;
            }
        }else if(word[1] >= 'a' && word[1] <= 'z'){ 
            if(word[i] < 'a' || word[i] > 'z'){
                return false;
            }
        }else{
            if(word[i] < 'A' || word[i] > 'Z'){ 
                return false;
            }
        }
    }
    return true;
};

550 / 550 个通过测试用例
执行用时:76 ms


PHP

<?php

function detectCapitalUse($word){
	for($i=1;$i<strlen($word);$i++){
		if( $word[0] >= 'a' && $word[0] <= 'z' ){
			if( $word[$i] >= 'a' && $word[$i] <='z' ){
			}else{
				return 0;
			}
		}else if( $word[1] >='a' && $word[1] <='z' ){
			if( $word[$i] >= 'a' && $word[$i] <= 'z' ){
			}else{
				return 0;
			}
		}else{
			if( $word[$i] >= 'A' && $word[$i] <= 'Z' ){
			}else{
				return 0;
			}
		}
	}
	return 1;
};
$words = 'Abcde';
$w=detectCapitalUse($words);
print_r($w);

猜你喜欢

转载自blog.csdn.net/sphinx1122/article/details/84333455