leetcodeテーマ-大文字の検出-Java

2507 ワード

これは技術シールではなく、記録シールだけです!
        最近leetcodeでJavaプログラミングを練習し始めました.大文字を検出するのは難しいですが、少し面白いので、記録してください.
        要件は次のとおりです.
                       1、単語を与えて、大文字の使用が正しいかどうかを判断する
                       2、正しい使用状況は以下の通り:(1)、USA
                                                                 (2)、word
                                                                 (3)、Google
                             残りのフォーマットは、大文字の使用エラーとみなされます.
      私の理解、間違いはUSa、word、Googleなどです.後のテストでA,a,すなわちアルファベットが正しいと判断する必要があることが分かった.これも注意が必要なポイントです.
      私の考えはこうです.
1、まず単語の長さを判断し、長さが1の場合、1つのアルファベットで、大文字と小文字にかかわらず正しいので、trueを返します.
1、長さが1より大きい場合は、最初のアルファベットの大文字と小文字を問わず正しいと判断し、trueを返します.
2、頭文字が大文字の場合、統計後のすべての文字の大きさの個数が大文字の場合、またはUSA、Googleなどの小文字の場合、trueを返します.そうでなければfalse
3、頭文字が小文字の場合、統計の後ろの文字はすべて小文字で、wordのようにtrueを返します.そうでなければfalse
コードは次のとおりです.
public static boolean detectCapitalUse(String word) {
    	
    	boolean result = false;
    	int cnt1 = 0;
    	int cnt2 = 0;
    	int length = word.length();
    	
    	
    	
    	char s1 = word.charAt(0);
    	boolean upper = Character.isUpperCase(s1);
    	
		if (length == 1)  {
			result = true;			
		   	}
		else
		{
			if (upper) {
	    		for (int index = 1;index < word.length();index++) {
	        		char s = word.charAt(index);
	        		
	        	    if(Character.isUpperCase(s)) {
	       		    cnt1++;
	        	    }
	        	    if(Character.isLowerCase(s)) {
	        	    cnt2++;      		
	        	    }
	        		
	        	if((cnt1 == word.length() - 1 ) || (cnt2 == word.length() - 1 )){
	        	    result = true;
	        	     }
	        	     else {
	        	     result = false;
	        	     }
	        	}
	    		System.out.println("Number of uppercase letters \t" + cnt1);
	    		System.out.println("Number of isLowerCase letters \t" + cnt2);
	    	}
	    	else {
	    		for (int index = 1;index < word.length();index++) {
	        		char s = word.charAt(index);
	        		//char s2 = word.charAt(length);
	        		
	        		if(Character.isLowerCase(s)) {
	           		 cnt2++;      		
	           		 }
	        		
	        		if(cnt2 == word.length() - 1 ){
	        			result = true;
	        		}
	        		else {
	        			result = false;
	        		}
	    		}
	    		
	    	}	
		}
    		    	
    	return result;   	    	     
    }
	

 
最初はアルファベット1文字に気づかずfalseに戻り、
単語の長さの計算が1つ足りないとwordになり、trueを返します. 
最終テストに合格し、問題が解決した.