LeetCode每日一题之520.检测大写字母

一【题目类别】

  • 字符串

二【题目难度】

  • 简单

三【题目编号】

  • 520.检测大写字母

四【题目描述】

  • 给定一个单词,你需要判断单词的大写使用是否正确。我们定义,在以下情况时,单词的大写用法是正确的:
  1. 全部字母都是大写,比如"USA"。
  2. 单词中所有字母都不是大写,比如"leetcode"。
  3. 如果单词不只含有一个字母,只有首字母大写, 比如 “Google”。
  • 否则,我们定义这个单词没有正确使用大写字母。

五【题目示例】

  • 示例 1:
    输入: “USA”
    输出: True
  • 示例 2:
    输入: “FlaG”
    输出: False

六【题目提示】

  • 注意: 输入是由大写和小写拉丁字母组成的非空单词。

七【解题思路】

  1. 边界值判空返回false
  2. 统计大写字母和小写字母出现的次数
  3. 如果字符串全是大写或者全是小写返回ture,如果字符串首位为大写其余为小写返回true
  4. 其余情况均不满足题目要求,返回false

八【时间频度】

  • 时间复杂度: O ( N ) O(N) O(N)

九【代码实现】

  1. Java语言版
package String;

public class p520_DetectCapital {
    
    

    public static void main(String[] args) {
    
    
        String word = "Leetcode";
        boolean res = detectCapitalUse(word);
        if (res) {
    
    
            System.out.println("符合全是大写,或者全是小写,或者首字母大写其余小写的规则");
        } else {
    
    
            System.out.println("不符合规则");
        }
    }

    public static boolean detectCapitalUse(String word) {
    
    
        // 将单词转成数组,方便后续处理
        char[] wds = word.toCharArray();
        // 大写字母个数
        int upWord = 0;
        // 小写字母个数
        int lowWord = 0;
        for (int i = 0; i < wds.length; i++) {
    
    
            if (wds[i] - 'a' < 0) {
    
    
                upWord++;
            } else {
    
    
                lowWord++;
            }
        }
        // 根据题意,如果全是大写或者全是小写,又或者首字母大写其余小写,返回true
        if (upWord == wds.length || lowWord == wds.length || (upWord == 1 && wds[0] < 'a')) {
    
    
            return true;
        } else {
    
    
            return false;
        }
    }

}
  1. C语言版
#include<stdio.h>
#include<stdbool.h>
#include<string.h>

bool detectCapitalUse(char * word)
{
    
    
	/*大写字母数量*/
	int upWord = 0;
	/*小写字母数量*/
	int lowWord = 0;
	for (int i = 0; i < strlen(word); i++)
	{
    
    
		if (word[i] - 'a' < 0)
		{
    
    
			upWord++;
		}
		else
		{
    
    
			lowWord++;
		}
	}
	/*如果全是大写字母或者全是小写字母或者首字母大写其余全为小写字母,符合要求,返回true*/
	if (upWord == strlen(word) || lowWord == strlen(word) || (upWord == 1 && word[0] < 'a'))
	{
    
    
		return true;
	}
	else
	{
    
    
		return false;
	}
}

int main(void)
{
    
    
	/*主函数省略*/
}

十【提交结果】

  1. Java语言版
    在这里插入图片描述
  2. C语言版
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/IronmanJay/article/details/114238903