題目描述
給定一個單詞,你需要判斷單詞的大寫使用是否正確。
我們定義,在以下情況時,單詞的大寫用法是正確的:
全部字母都是大寫,比如"USA"。
單詞中所有字母都不是大寫,比如"leetcode"。
如果單詞不只含有一個字母,只有首字母大寫, 比如 “Google”。
否則,我們定義這個單詞沒有正確使用大寫字母。
示例 1:
輸入: “USA”
輸出: True
示例 2:
輸入: “FlaG”
輸出: False
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/detect-capital
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
解題思路及代碼
class Solution {
public boolean detectCapitalUse(String word) {
/**
* 遍歷每一個字符,
* 首字母大寫,全部大寫或者全部小寫返回true
* 首字母小寫,後面出現大寫返回false
*/
if(word.length()==1){
return true;
}
char c=word.charAt(0);
//首字母大寫true,小寫false
boolean first=c>'Z'?false:true;
boolean next=word.charAt(1)>'Z'?false:true;
for(int i=1;i<word.length();i++){
c=word.charAt(i);
//第一個大寫,後面就得全部大寫或者小寫
if(first){
/**
* 後面的全大寫全小寫可以用和或來表示
* 當 next && 後面小寫 結果爲1時,返回false
* 當 !next && 後面大寫 結果爲1時,返回false
*/
//首字母爲大寫(next==1),後面爲小寫(&&前面爲1)
if( (word.charAt(i)>'Z') && next){
return false;
}
//首字母爲小寫(!next==1),後面爲大寫(||後面部分爲1)
if(!next && word.charAt(i) <= 'Z'){
return false;
}
}else{
//第一個小寫,後面就得全部小寫
if(c<='Z'){
return false;
}
}
}
//上面都是false的情況,這裏都是true的情況
return true;
}
}
總結
對於使用true和false來判斷題目內容時,
&& 一般使用 true
|| 一把使用false