【520】Detect Capital

题目:

Given a word, you need to judge whether the usage of capitals in it is right or not.

We define the usage of capitals in a word to be right when one of the following cases holds:

  1. All letters in this word are capitals, like "USA".
  2. All letters in this word are not capitals, like "leetcode".
  3. Only the first letter in this word is capital if it has more than one letter, like "Google".
Otherwise, we define that this word doesn't use capitals in a right way.

Example 1:

Input: "USA"
Output: True

Example 2:

Input: "FlaG"
Output: False

Note: The input will be a non-empty word consisting of uppercase and lowercase latin letters.

思路:题目中所提到的三种情况分别可以转化为:

1、大写字母的数目等于字符长度;

2、大写字母的数目等于0;

3、大写字母的数目为1且首字母为大写。

因此只要从首字母开始逐个遍历得到大写字母的数目,再根据上述情况进行判断即可。

代码实现:

class Solution {
public:
    bool detectCapitalUse(string word) {
        int countU=0;
        for (int i=0; i<word.size();i++) {
            if (isupper(word[i]))
                countU++;
        }
        return countU==word.size()||countU==0||(countU==1&&isupper(word[0]));
    }
};

附:C++ STL string的一些用法

1:string对象的定义和初始化以及读写
string s1; 默认构造函数,s1为空串
string s2(s1); 将s2初始化为s1的一个副本
string s3("valuee"); 将s3初始化一个字符串面值副本
string s4(n,'c'); 将s4 初始化为字符'c'的n个副本
cin>>s5; 读取有效字符到遇到空格
getline(cin,s6); 读取字符到遇到换行,空格可读入,知道‘\n’结束(练习在下一个代码中),
getline(cin,s7,'a'); 一个直到‘a’结束,其中任何字符包括'\n'都能够读入3:string对象中字符的处理(头文件cctype)
isalnum(c) 如果c是字母或数字,返回 true
isalpha(c) 如果c是字母,返回true
iscntrl(c) c是控制符,返回true
isdigit(c) 如果c是数组,返回true
isgraph(c) 如果c不是空格,则可打印,,则为true
islower(c) 如果c是小写字母,则为true
isupper(c) 如果c是大写字符,则为true
isprint(c) 如果c是可打印的字符,则为true
ispunct(c) 如果c是标点符号,则为true
isspace(c) 如果c是空白字符,则为true
isxdigit(c) 如果c是十六进制数,则为true
tolower(c) 如果c是大写字符,则返回其小写字母,否则直接返回c
toupper(c) 跟tolower相反


2:string对象操作
s.empty() 判断是否为空,bool型
s.size() 或 s.length() 返回字符的个数
s[n] 返回位置为n的字符,从0开始计数
s1+s2 连接
s1=s2 替换
s1==s2 相等,返回true或false

!=,<,<=,>,>= 字符串比较,两个字符串短的与长的前面匹配,短的小于长的


3:string对象中字符的处理
isalnum(c) 如果c是字母或数字,返回 true
isalpha(c) 如果c是字母,返回true
iscntrl(c) c是控制符,返回true
isdigit(c) 如果c是数组,返回true
isgraph(c) 如果c不是空格,则可打印,,则为true
islower(c) 如果c是小写字母,则为true
isupper(c) 如果c是大写字符,则为true
isprint(c) 如果c是可打印的字符,则为true
ispunct(c) 如果c是标点符号,则为true
isspace(c) 如果c是空白字符,则为true
isxdigit(c) 如果c是十六进制数,则为true
tolower(c) 如果c是大写字符,则返回其小写字母,否则直接返回c
toupper(c) 跟tolower相反

USB detect是指计算机或设备检测到USB接口连接的动作。当插入USB设备时,计算机会自动检测到设备的连接并进行相关操作。 首先,当USB设备插入计算机的USB接口时,接口会立即发送信号给计算机的操作系统,告知有新的设备连接。 操作系统会根据设备的类型和属性来做出相应的反应。如果该设备是一个存储设备,操作系统会分配一个驱动器号码,并在文件资源管理器中显示出该驱动器。用户可以通过这个驱动器进行文件的读取和写入操作。 如果设备是一个输入设备,例如键盘或鼠标,操作系统会检测到这些输入设备并使其可用。用户可以通过键盘输入字符或通过鼠标点击进行操作。 除了存储设备和输入设备,其他类型的USB设备,如打印机、摄像头、音频设备等也会被检测到。根据设备类型的不同,操作系统会加载相应的驱动程序来管理设备的功能。 另外,操作系统还会为每个设备分配一个设备号码,以便在需要的时候能够与设备进行通信。 当设备拔出时,操作系统会检测到设备的断开,并相应地进行处理。存储设备的驱动器号码会被移除,输入设备会被禁用,其他设备会被停止运行并从系统中移除。 总而言之,USB detect是计算机检测到USB设备连接或断开的过程。操作系统会根据设备的类型和属性来对设备进行相应的处理和管理,使得用户可以方便地使用USB设备。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值