【JS】檢測大寫字母 #字串
阿新 • • 發佈:2018-11-23
給定一個單詞,你需要判斷單詞的大寫使用是否正確。
我們定義,在以下情況時,單詞的大寫用法是正確的:
全部字母都是大寫,比如"USA"。
單詞中所有字母都不是大寫,比如"leetcode"。
如果單詞不只含有一個字母,只有首字母大寫, 比如 “Google”。
否則,我們定義這個單詞沒有正確使用大寫字母。
示例 1:
輸入: “USA”
輸出: True
示例 2:
輸入: “FlaG”
輸出: False
注意: 輸入是由大寫和小寫拉丁字母組成的非空單詞。
解法一:
通過比較每個字元的Unicode編碼進行判斷,有以下幾種情況
當第0位字元是小寫,後面的字元也需要是小寫, 如 w, word
當第1位字元是小寫,後面的字元也需要是小寫, 如 h, character
當第1位字元是大寫,後面的字元也需要是大寫。 如 P, 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);