检测大写字母
难度:
标签:
题目描述
我们定义,在以下情况时,单词的大写用法是正确的:
- 全部字母都是大写,比如
"USA"
。 - 单词中所有字母都不是大写,比如
"leetcode"
。 - 如果单词不只含有一个字母,只有首字母大写, 比如
"Google"
。
给你一个字符串 word
。如果大写用法正确,返回 true
;否则,返回 false
。
示例 1:
输入:word = "USA" 输出:true
示例 2:
输入:word = "FlaG" 输出:false
提示:
1 <= word.length <= 100
word
由小写和大写英文字母组成
代码结果
运行时间: 16 ms, 内存: 15.9 MB
/*
题目思路:
我们需要检查一个字符串是否符合大写使用的规则。
1. 如果字符串中的所有字母都是大写,则符合规则。
2. 如果字符串中的所有字母都不是大写,也符合规则。
3. 如果字符串不止一个字母且只有首字母大写,也符合规则。
具体步骤:
1. 使用Java Stream API来检查字符串是否全部是大写。
2. 使用Java Stream API来检查字符串是否全部是小写。
3. 使用Java Stream API来检查字符串的第一个字母是否是大写且其余字母是小写。
*/
public class DetectCapitalStream {
public boolean detectCapitalUse(String word) {
// 全部大写
if (word.chars().allMatch(Character::isUpperCase)) {
return true;
}
// 全部小写
if (word.chars().allMatch(Character::isLowerCase)) {
return true;
}
// 首字母大写且其余字母小写
if (Character.isUpperCase(word.charAt(0)) && word.substring(1).chars().allMatch(Character::isLowerCase)) {
return true;
}
return false;
}
}
解释
方法:
这个题解的思路是判断给定的单词 word 是否满足以下三种情况之一:1. 所有字母都是大写(word.upper());2. 所有字母都是小写(word.lower());3. 只有首字母大写,其余字母都是小写(word.title())。如果满足其中任意一种情况,则返回 True,否则返回 False。
时间复杂度:
O(n)
空间复杂度:
O(n)
代码细节讲解
🦆
为什么在判断只有首字母大写时使用`word.title()`方法,这种方法在哪些特殊情况下可能不适用?
▷🦆
在使用`word.upper()`和`word.lower()`检测时,这些方法是否考虑了可能存在的非字母字符,比如数字或符号?
▷🦆
该算法在极端情况下(如字符串长度达到100字符)的性能如何,是否有测试过?
▷🦆
在解决这个问题时,是否考虑了使用正则表达式作为替代方法,其可能的优势或劣势是什么?
▷