本文主要是介绍LeetCode 520.检测大写字母,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
给定一个单词,你需要判断单词的大写使用是否正确。
我们定义,在以下情况时,单词的大写用法是正确的:
1.全部字母都是大写,比如"USA"。
2.单词中所有字母都不是大写,比如"leetcode"。
3.如果单词不只含有一个字母,只有首字母大写, 比如 “Google”。
否则,我们定义这个单词没有正确使用大写字母。
示例 1:
输入: “USA”
输出: True
示例 2:
输入: “FlaG”
输出: False
解题思路
- 题目解析:对于单词的大写用法正确重新进行分类,分类为三种情况,第一种:字符串的长度小于等于1,一定返回
true
,第二种:字符串的第一个字母是大写,那么之后的字母就分为两种情况,如果第二个字母是大写,那么以后的字母都是大写,大写的使用才正确;如果第二个字母是小写,那么以后的字母都是小写,大写的使用才正确,第三种:字符串的第一个字母是小写,那么之后的字母都是小写才使用正确
代码实现
class Solution {public static boolean detectCapitalUse(String word) {if (word.length() <= 1) {return true;}char firstChar = word.charAt(0);if (firstChar >= 'A' && firstChar <= 'Z') {//如果第一个字母是大写字母,分两种情况,1、下面的全是大写,2、下面的全是小写char secondChar = word.charAt(1);if (secondChar >= 'A' && secondChar <= 'Z') {for (int i = 2; i < word.length(); i++) {if (word.charAt(i) < 'A' || word.charAt(i) > 'Z') {return false;}}} else if (secondChar >= 'a' && secondChar <= 'z') {for (int i = 2; i < word.length(); i++) {if (word.charAt(i) < 'a' || word.charAt(i) > 'z') {return false;}}}} else if (word.charAt(0) >= 'a' && word.charAt(0) <= 'z'){//如果第一个字母是小写字母,那么后面就必须全是小写字母for (int i = 1; i < word.length(); i++) {if (word.charAt(i) < 'a' || word.charAt(i) > 'z') {return false;}}}return true;}
}
- 时间复杂度:O(n)
这篇关于LeetCode 520.检测大写字母的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!