Every day a leetcode
题目来源:520. 检测大写字母
解法1:
根据题目要求,若单词的大写用法正确,则需要满足:
-
若第 1 个字母为大写,则其他字母必须均为大写或均为小写;
-
若第 1 个字母为小写,则其他字母必须均为小写。
遍历一次字符串就能得到答案。
代码:
/*
* @lc app=leetcode.cn id=520 lang=cpp
*
* [520] 检测大写字母
*/
// @lc code=start
class Solution
{
public:
bool detectCapitalUse(string word)
{
if (word.size() <= 1)
return true;
if (isupper(word[0]))
{
if (isupper(word[1]))
{
for (int i = 2; i < word.size(); i++)
if (islower(word[i]))
return false;
}
else
{
for (int i = 2; i < word.size(); i++)
if (isupper(word[i]))
return false;
}
}
else
{
for (int i = 1; i < word.size(); i++)
if (isupper(word[i]))
return false;
}
return true;
}
};
// @lc code=end
结果:

复杂度分析:
时间复杂度:O(n),其中 n 为字符串的长度。我们需要遍历字符串中的每个字符。
空间复杂度:O(1)。
该问题涉及字符串处理,主要检查单词中大写字母的使用是否符合规则。如果第一个字母是大写,则剩余字母应全为大写或全为小写;反之,若第一个字母是小写,则所有字母都应为小写。提供的C++代码实现通过遍历字符串并使用isupper和islower函数进行判断,时间复杂度为O(n),空间复杂度为O(1)。
297

被折叠的 条评论
为什么被折叠?



