leetcode题目——检测大写字母-Java

        这不是技术贴,只是记录贴!

        最近开始在leetcode上练习Java编程,有个题目是检测大写字母,难易程度为易,但还有点意思,记录一下。

        要求如下:

                       1、给定一个单词,判断大写字母的使用是否正确

                       2、正确的使用情况如下:(1)、USA

                                                                 (2)、word

                                                                 (3)、Google

                             其余格式,视为大写字母使用错误。

      我的理解,错误的比如:USa、worD、GooGle等等。后面测试发现 A,a,也就是一个字母时需要认为是对的。这也是需要注意的一个点。

      我的思路是这样的:

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;   	    	     
    }
	

 

一开始没注意一个字母的情况,返回了false,

单词长度计算少了一个导致worD,这种情况返回true。 

最终测试通过,问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值