领扣(LeetCode)检测大写字母

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

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

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

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

示例 1:

输入: "USA"
输出: True

示例 2:

输入: "FlaG"
输出: 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=0;i<word.length();i++)
 6         {
 7             if(‘A‘<=word[i] && word[i]<= ‘Z‘)
 8             {
 9                 case2=false;
10                 if(i>=1)
11                     case3=false;
12             }
13             if(‘a‘<=word[i] && word[i]<= ‘z‘)
14             {
15                 case1=false;
16                 if(i==0)
17                     case3=false;
18             }
19         }
20         return case1 || case2 || case3;
21     }
22 };

原文地址:https://www.cnblogs.com/axiangcoding/p/9898489.html

时间: 2024-10-03 14:46:02

领扣(LeetCode)检测大写字母的相关文章

leetcode 520.检测大写字母

给定一个单词,你需要判断单词的大写使用是否正确. 我们定义,在以下情况时,单词的大写用法是正确的: 全部字母都是大写,比如"USA".单词中所有字母都不是大写,比如"leetcode".如果单词不只含有一个字母,只有首字母大写, 比如 "Google".否则,我们定义这个单词没有正确使用大写字母. 1 class Solution { 2 public boolean detectCapitalUse(String word) { 3 boole

520. 检测大写字母

给定一个单词,你需要判断单词的大写使用是否正确. 我们定义,在以下情况时,单词的大写用法是正确的: 1.全部字母都是大写,比如"USA". 2.单词中所有字母都不是大写,比如"leetcode". 3.如果单词不只含有一个字母,只有首字母大写, 比如 "Google". 否则,我们定义这个单词没有正确使用大写字母. 示例 1: 输入: "USA"输出: True示例 2: 输入: "FlaG"输出: Fal

程序一 用记事本建立文件src.dat,其中存放若干字符。编写程序,从文件src.dat中读取数据,统计其中的大写字母、小写字母、数字、其它字符的个数,并将这些数据写入到文件test.dat中。

用记事本建立文件src.dat,其中存放若干字符.编写程序,从文件src.dat中读取数据,统计其中的大写字母.小写字母.数字.其它字符的个数,并将这些数据写入到文件test.dat中. #include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ FILE*fp1,*fp2; char ch; int da=0,xiao=0,shuzi=0,qita=0; if((fp1=fopen("sr

大写字母出现的次数并且打印

import java.util.Scanner; /** * 2.编写一个java程序,提示用户输入一个字符串,要求字符串中必须存在字母(需要代码判断) a. 若不符合要求,则提示用户重新输入直到符合要求为止 b. 若符合要求 ,则判断字符串中的大写字母出现的次数并且打印 */public class Test02 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while

待解:通过把第6位设置为0使小写字母都变成大写字母

根据Unicode/ASCII字符集的定义,小写字母与大写字母的区别只是前者比后者整整大32.因此…… 1 class UpCase { 2 public static void main(String[] args) { 3 char ch; 4 5 for (int i = 0; i < 10; i++) { 6 ch = (char) ('a' + i); 7 System.out.print(ch); 8 9 // This statement turns off the 6th bit

把一个string串的所有小写字母转成大写字母的例子来看看看全局函数的使用

今天写了一个小例子,把字符串里面的所有小写字母全部转换成大写字母http://blog.csdn.net/yasaken/article/details/7303903 1 #include "stdafx.h" 2 #include <string> 3 #include <algorithm> 4 #include <iostream> 5 6 using namespace std; 7 8 int _tmain(int argc, _TCHA

汇编语言——统计一个字符串中的大写字母、小写字母、数字和其他字符的个数,并显示

;统计字符串中大写字母.小写字母.数字.其他字符的个数DATAS SEGMENT buf db '12ADdf#gh592HKL*','$' tp1 db 0;大写字母个数 tp2 db 0;小写字母个数 tp3 db 0;数字的个数 tp4 db 0;其他字符的个数 str1 db 'the number of big is:','$' str2 db 'the number of small is:','$' str3 db 'the number of number is:','$' st

3、从键盘上接收一个字母,判断是否是大写字母,如果是则转换成小写字母输出

3.从键盘上接收一个字母,判断是否是大写字母,如果是则转换成小写字母输出,否则直接输出 #include <stdio.h>void main(){   char x=0;    printf("请输入一个字母:");    scanf("%c",&x);    x>=65&&x<=90? printf("小写字母为:%c",x+32): printf("%c",x);    p

android 设置字体颜色、EditText自动输入转换成大写字母的多种方式

在TextView上面设置某一个字的字体颜色为指定颜色时,可以通过java类SpannableString类和Html语言来实现. (一)SpannableString类方式 private void setText(TextView t){ String text = t.getText().toString().trim(); SpannableString span = new SpannableString(text); span.setSpan(new ForegroundColorS