领扣(LeetCode)检测大写字母 个人题解
给定一个单词,你需要判断单词的大写使用是否正确。
我们定义,在以下情况时,单词的大写用法是正确的:
- 全部字母都是大写,比如"USA"。
- 单词中所有字母都不是大写,比如"leetcode"。
- 如果单词不只含有一个字母,只有首字母大写, 比如 "Google"。
否则,我们定义这个单词没有正确使用大写字母。
示例 1:
输入: "USA"
输出: True
示例 2:
输入: "FlaG"
输出: False
注意: 输入是由大写和小写拉丁字母组成的非空单词。
这题比较简单。第一个想法是做三个判断。一个判断是不是全部小写,一个判断是不是全部大写,一个判断是不是首字符大写,其他字符小写。
代码如下:
class Solution {
public boolean detectCapitalUse(String word) {
if (word.equals(word.toLowerCase()) || word.equals(word.toUpperCase()))
return true;
else if ('A' <= word.charAt(0) && word.charAt(0) <= 'Z') {
String tmp = word.substring(1);
if (tmp.equals(tmp.toLowerCase()))
return true;
else
return false;
}
return false;
}
}
但是这样写,算法的执行速度很慢,只打败了10%的玩家 XD 。因为对这个字符串内的字符进行了多次遍历。然后就在想,为什么不用一次遍历解决呢?因为全部大写,全部小写,首字符大写三个情况可以在一个遍历中判断。首先置三种情况的结果都为真,然后一旦遇到不符合其中任意一种情况的时候,将那种情况置为假,最后输出三种结果或的结果。这样的执行速度就非常快了。打败了86%的人。
代码如下:
class Solution {
public boolean detectCapitalUse(String word) {
boolean case1=true,case2=true,case3=true;
for(int i=0;i<word.length();i++)
{
if('A'<=word.charAt(i) && word.charAt(i)<= 'Z')
{
case2=false;
if(i>=1)
case3=false;
}
if('a'<=word.charAt(i) && word.charAt(i)<= 'z')
{
case1=false;
if(i==0)
case3=false;
}
}
return case1 || case2 || case3;
}
}
最后呢,题外话,想看一下C++和JAVA执行速度的区别,于是用C++改写了代码,结果发现,执行速度降低了20ms,这次打败了91%的人。C++果然天下第一啊
代码如下:
class Solution {
public:
bool detectCapitalUse(string word) {
bool case1=true,case2=true,case3=true;
for(int i=;i<word.length();i++)
{
if('A'<=word[i] && word[i]<= 'Z')
{
case2=false;
if(i>=)
case3=false;
}
if('a'<=word[i] && word[i]<= 'z')
{
case1=false;
if(i==)
case3=false;
}
}
return case1 || case2 || case3;
}
};
领扣(LeetCode)检测大写字母 个人题解的更多相关文章
- Java实现 LeetCode 520 检测大写字母
520. 检测大写字母 给定一个单词,你需要判断单词的大写使用是否正确. 我们定义,在以下情况时,单词的大写用法是正确的: 全部字母都是大写,比如"USA". 单词中所有字母都不是 ...
- 力扣(LeetCode)520. 检测大写字母
给定一个单词,你需要判断单词的大写使用是否正确. 我们定义,在以下情况时,单词的大写用法是正确的: 全部字母都是大写,比如"USA". 单词中所有字母都不是大写,比如"l ...
- [Swift]LeetCode520. 检测大写字母 | Detect Capital
Given a word, you need to judge whether the usage of capitals in it is right or not. We define the u ...
- 520 Detect Capital 检测大写字母
给定一个单词,你需要判断单词的大写使用是否正确.我们定义,在以下情况时,单词的大写用法是正确的: 全部字母都是大写,比如"USA". 单词中所有字母都不是大写,比如&q ...
- Leetcode520Detect Capital检测大写字母
给定一个单词,你需要判断单词的大写使用是否正确. 我们定义,在以下情况时,单词的大写用法是正确的: 全部字母都是大写,比如"USA". 单词中所有字母都不是大写,比如"l ...
- 领扣[LeetCode]从零开始[使用C++][1,10]
0.序 以后不做后端开发是不是就用不到C++了?真香.话不多说,我已经躺倒在第一题上了.不贴题目了,持续更新. 1.两数之和 原文:https://www.cnblogs.com/grandyang/ ...
- 领扣(LeetCode)删除链表中的节点 个人题解
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 现有一个链表 -- head = [4,5,1,9],它可以表示为: 4 -> 5 -> 1 - ...
- 领扣(LeetCode)第三大的数 个人题解
给定一个非空数组,返回此数组中第三大的数.如果不存在,则返回数组中最大的数.要求算法时间复杂度必须是O(n). 示例 1: 输入: [3, 2, 1] 输出: 1 解释: 第三大的数是 1. 示例 2 ...
- [LeetCode] Detect Capital 检测大写格式
Given a word, you need to judge whether the usage of capitals in it is right or not. We define the u ...
随机推荐
- 浅谈爬虫 《一》 ===python
浅谈爬虫 <一> ===python ‘’正文之前先啰嗦一下,准确来说,在下还只是一个刚入门IT世界的菜鸟,工作近两年了,之前做前端的时候就想写博客来着,现在都转做python了,如果还 ...
- go-异常处理-error-panic-recover
Go语言的函数可以一次返回多个结果.这就为我们温和地报告错误提供了语言级别的支持. func readFile(path string) ([]byte, error) { file, err := ...
- python编程系列---global的使用注意点
global用法虽然很简单,当在函数中要修改全局变量时要使用到,但也要注意一个小问题,看下面的代码: 调用append()方法,只是修改,并不是赋值操作,不需要global提前声明 temp_num ...
- Python小工具:利用ffmpy3库3秒钟将视频转换为音频
作者 | pk 哥 来源公众号 | Python知识圈(ID:PythonCircle) 最近,有读者微信上私聊我,想让我写一篇视频批量转换成音频的文章,我答应了,周末宅家里把这个小工具做出来了. 这 ...
- Textbox输入状态提示
前: <DockPanel Margin="> <TextBox SelectionChanged="TextBox_SelectionChanged" ...
- Java IO_001.File类--文件或文件夹相关操作
Java IO之File对象常用操作 File类:用于文件或文件夹或网址相关联的操作.可以关联或不关联文件(即关联不存在的文件).构造函数有: public File(String pathname) ...
- Dubbo配置完全外部化实践,使用动态配置中心的注意事项
问题描述 近期开发项目,将Dubbo的配置全部外部化到动态配置中心.这里配置中心我使用的是Apollo. @Configuration public class DubboConfig { @Bean ...
- 你好,Go语言
本文是「vangoleo的Go语言学习笔记」系列文章之一. 官网: http://www.vangoleo.com/go/hello-golang/ 我在2015年第一次接触Go语言,完成了Hello ...
- unity 截屏总结
转载与https://www.cnblogs.com/MissLi/p/8005342.html 1.针对指定的相机进行截屏 此中方式要添加yield return waitfortheEndofFr ...
- SpringBoot注入配置文件的3种方法
方案1:@ConfigurationProperties+@Component 定义spring的一个实体bean装载配置文件信息,其它要使用配置信息是注入该实体bean /** * 将配置文件中配置 ...