给定一个单词,你需要判断单词的大写使用是否正确。

我们定义,在以下情况时,单词的大写用法是正确的:

  1. 全部字母都是大写,比如"USA"。
  2. 单词中所有字母都不是大写,比如"leetcode"。
  3. 如果单词不只含有一个字母,只有首字母大写, 比如 "Google"。

否则,我们定义这个单词没有正确使用大写字母。

示例 1:

  1. 输入: "USA"
  2. 输出: True

示例 2:

  1. 输入: "FlaG"
  2. 输出: False

注意: 输入是由大写和小写拉丁字母组成的非空单词。

这题比较简单。第一个想法是做三个判断。一个判断是不是全部小写,一个判断是不是全部大写,一个判断是不是首字符大写,其他字符小写。

代码如下:

  1. class Solution {
  2. public boolean detectCapitalUse(String word) {
  3. if (word.equals(word.toLowerCase()) || word.equals(word.toUpperCase()))
  4. return true;
  5. else if ('A' <= word.charAt(0) && word.charAt(0) <= 'Z') {
  6. String tmp = word.substring(1);
  7. if (tmp.equals(tmp.toLowerCase()))
  8. return true;
  9. else
  10. return false;
  11. }
  12. return false;
  13. }
  14. }

但是这样写,算法的执行速度很慢,只打败了10%的玩家 XD 。因为对这个字符串内的字符进行了多次遍历。然后就在想,为什么不用一次遍历解决呢?因为全部大写,全部小写,首字符大写三个情况可以在一个遍历中判断。首先置三种情况的结果都为真,然后一旦遇到不符合其中任意一种情况的时候,将那种情况置为假,最后输出三种结果或的结果。这样的执行速度就非常快了。打败了86%的人。

代码如下:

  1. class Solution {
  2. public boolean detectCapitalUse(String word) {
  3. boolean case1=true,case2=true,case3=true;
  4. for(int i=0;i<word.length();i++)
  5. {
  6. if('A'<=word.charAt(i) && word.charAt(i)<= 'Z')
  7. {
  8. case2=false;
  9. if(i>=1)
  10. case3=false;
  11. }
  12. if('a'<=word.charAt(i) && word.charAt(i)<= 'z')
  13. {
  14. case1=false;
  15. if(i==0)
  16. case3=false;
  17. }
  18. }
  19. return case1 || case2 || case3;
  20. }
  21. }

最后呢,题外话,想看一下C++和JAVA执行速度的区别,于是用C++改写了代码,结果发现,执行速度降低了20ms,这次打败了91%的人。C++果然天下第一啊

代码如下:

  1. class Solution {
  2. public:
  3. bool detectCapitalUse(string word) {
  4. bool case1=true,case2=true,case3=true;
  5. for(int i=;i<word.length();i++)
  6. {
  7. if('A'<=word[i] && word[i]<= 'Z')
  8. {
  9. case2=false;
  10. if(i>=)
  11. case3=false;
  12. }
  13. if('a'<=word[i] && word[i]<= 'z')
  14. {
  15. case1=false;
  16. if(i==)
  17. case3=false;
  18. }
  19. }
  20. return case1 || case2 || case3;
  21. }
  22. };

领扣(LeetCode)检测大写字母 个人题解的更多相关文章

  1. Java实现 LeetCode 520 检测大写字母

    520. 检测大写字母 给定一个单词,你需要判断单词的大写使用是否正确. 我们定义,在以下情况时,单词的大写用法是正确的: 全部字母都是大写,比如"USA". 单词中所有字母都不是 ...

  2. 力扣(LeetCode)520. 检测大写字母

    给定一个单词,你需要判断单词的大写使用是否正确. 我们定义,在以下情况时,单词的大写用法是正确的: 全部字母都是大写,比如"USA". 单词中所有字母都不是大写,比如"l ...

  3. [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 ...

  4. 520 Detect Capital 检测大写字母

    给定一个单词,你需要判断单词的大写使用是否正确.我们定义,在以下情况时,单词的大写用法是正确的:    全部字母都是大写,比如"USA".    单词中所有字母都不是大写,比如&q ...

  5. Leetcode520Detect Capital检测大写字母

    给定一个单词,你需要判断单词的大写使用是否正确. 我们定义,在以下情况时,单词的大写用法是正确的: 全部字母都是大写,比如"USA". 单词中所有字母都不是大写,比如"l ...

  6. 领扣[LeetCode]从零开始[使用C++][1,10]

    0.序 以后不做后端开发是不是就用不到C++了?真香.话不多说,我已经躺倒在第一题上了.不贴题目了,持续更新. 1.两数之和 原文:https://www.cnblogs.com/grandyang/ ...

  7. 领扣(LeetCode)删除链表中的节点 个人题解

    请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 现有一个链表 -- head = [4,5,1,9],它可以表示为: 4 -> 5 -> 1 - ...

  8. 领扣(LeetCode)第三大的数 个人题解

    给定一个非空数组,返回此数组中第三大的数.如果不存在,则返回数组中最大的数.要求算法时间复杂度必须是O(n). 示例 1: 输入: [3, 2, 1] 输出: 1 解释: 第三大的数是 1. 示例 2 ...

  9. [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 ...

随机推荐

  1. iOS开发请您把握现在 — 面向未来学习

    iOS开发请您把握现在 — 面向未来学习 这一篇文章,如果你是一名iOS开发正好也处于开发晋升瓶颈迷茫期,不妨停下你的脚步,花五分钟看看,兴许有你需要的!文章结尾有彩蛋 群里常见的唱哀 iOS现在到底 ...

  2. 套壳浏览器与Chrome浏览器之间的差别

    之前QQ浏览器一直是我前端调试工具的主力,因为它是一个套壳浏览器,所以它的兼容模式(谷歌Chrome内核)和极速模式(IE浏览器内核)简直是调试兼容性的神器,可以直接切换,不用再反复打开Chrome和 ...

  3. 《Java并发编程实战》读书笔记-第5章 基础构建模块

    同步容器类 同步容器类实现线程安全的方式:将所有状态封装起来,对每个公有方法使用同步,使得每一次只有一个线程可以访问.同步容器类包含:Vector.Hashtable.Collections.sync ...

  4. xss姿势利用

    1.定位页面可以出现xss的位置 可能会出现联合点利用 一个页面多个存储位置或者一个页面多个参数联合利用 例如输入xss 查看页面源码页面里有多个xss 或者多个参数显示 可以利用 需要注意的是有的是 ...

  5. numpy+pandas+ matplotlib模块(day18)

    目录 numpy模块 二维数组 numpy数组的属性 T 数组的装置 dtype 数组元素的数据类型 size 数组元素的个数 ndim 数组的维数 shape数组的维度大小 astype 类型转换 ...

  6. 爬虫连接mongodb、多线程多进程的使用

    一.连接mongodb 1.            设置数据库 client=pymongo.MongoClient(‘localhost’) 2.            db=client[‘lag ...

  7. NodeJs 实现 WebSocket 即时通讯(版本二)

    服务端代码 websocket.js 'use strict' const WebSocket = require('ws'); const connections = new Map(); cons ...

  8. (JavaScript) 字符串转16进制

    function strToBase64() { var str = "https://www.baidu.com/"; var val = ""; for ( ...

  9. Java8系列 (六) 新的日期和时间API

    概述 在Java8之前, 我们一般都是使用 SimpleDateFormat 来解析和格式化日期时间, 但它是线程不安全的. @Test public void test() { SimpleDate ...

  10. Idea导入Web项目并发布到Tomcat

    Idea导入现有的Web项目并发布到Tomcat,发现Tomcat没有自动发布 问题: 导入一个Web项目时,idea并没有把他当成web,所以需要自己修改项目结构 1.导入项目 打开 File-&g ...