LeetCode第520題---檢測大寫字母

題目描述

給定一個單詞,你需要判斷單詞的大寫使用是否正確。

我們定義,在以下情況時,單詞的大寫用法是正確的:

全部字母都是大寫,比如"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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章