1. 程式人生 > >【JS】檢測大寫字母 #字串

【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);