英文原文
We define the usage of capitals in a word to be right when one of the following cases holds:
- All letters in this word are capitals, like
"USA"
. - All letters in this word are not capitals, like
"leetcode"
. - Only the first letter in this word is capital, like
"Google"
.
Given a string word
, return true
if the usage of capitals in it is right.
Example 1:
Input: word = "USA" Output: true
Example 2:
Input: word = "FlaG" Output: false
Constraints:
1 <= word.length <= 100
word
consists of lowercase and uppercase English letters.
中文题目
我们定义,在以下情况时,单词的大写用法是正确的:
- 全部字母都是大写,比如
"USA"
。 - 单词中所有字母都不是大写,比如
"leetcode"
。 - 如果单词不只含有一个字母,只有首字母大写, 比如
"Google"
。
给你一个字符串 word
。如果大写用法正确,返回 true
;否则,返回 false
。
示例 1:
输入:word = "USA" 输出:true
示例 2:
输入:word = "FlaG" 输出:false
提示:
1 <= word.length <= 100
word
由小写和大写英文字母组成
通过代码
高赞题解
模拟
根据题意,分别进行三种规则的判断即可。
代码:
class Solution {
public boolean detectCapitalUse(String word) {
if (word.toUpperCase().equals(word)) return true;
if (word.toLowerCase().equals(word)) return true;
int n = word.length(), idx = 1;
if (Character.isUpperCase(word.charAt(0))) {
while (idx < n && Character.isLowerCase(word.charAt(idx))) idx++;
}
return idx == n;
}
}
class Solution {
public boolean detectCapitalUse(String word) {
int n = word.length(), cnt = 0;
for (int i = 0; i < n; i++) {
if (Character.isUpperCase(word.charAt(i))) cnt++;
}
return cnt == n || cnt == 0 || (cnt == 1 && Character.isUpperCase(word.charAt(0)));
}
}
- 时间复杂度:$P1$ 复杂度为 $O(n)$,常数为 $5$;$P2$ 复杂度为 $O(n)$,常数为 $1$。
- 空间复杂度:$P1$ 算法执行过程会产生新的字符串,复杂度为 $O(n)$;$P2$ 复杂度为 $O(1)$
其他「模拟」相关内容
题太简单?不如来学习热乎的 $Trie$ 四部曲的最终章 「可删除/可计数/持久化」Trie ,相关阅读:
或是考虑加练如下「模拟」题目 🍭🍭
注:以上目录整理来自 wiki,任何形式的转载引用请保留出处。
最后
如果有帮助到你,请给题解点个赞和收藏,让更多的人看到 ~ (“▔□▔)/
也欢迎你 关注我(公主号后台回复「送书」即可参与长期看题解学算法送实体书活动)或 加入「组队打卡」小群 ,提供写「证明」&「思路」的高质量题解。
所有题解已经加入 刷题指南,欢迎 star 哦 ~
统计信息
通过次数 | 提交次数 | AC比率 |
---|---|---|
67841 | 117689 | 57.6% |
提交历史
提交时间 | 提交结果 | 执行时间 | 内存消耗 | 语言 |
---|