欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

520. Detect Capital

程序员文章站 2022-03-09 22:38:03
...

520. Detect Capital
520. Detect Capital

    bool detectCapitalUse(string word) {
        int sum=0,i=0;
        for(;i<word.size();i++){
            if(word[i]>='A'&&word[i]<='Z'){
                sum++;
                if(sum==1){
                    if(i!=0)
                        return false;
                }else{
                    if(sum!=i+1)
                        return false;
                }
            }
        }
         if(sum>1&&sum!=i)
                return false;
        return true;
    }

j记录最后一个大写字母的位置,判断是否为0,为0返回true,否则返回false。

    bool detectCapitalUse(string word) {
        int sum=0,i=0,j;
        for(;i<word.size();i++){
            if(word[i]>='A'&&word[i]<='Z'){
                sum++;
                j=i;
            }
        }
         if(!sum||sum==word.size()||sum==1&&j==0) return true;
        return false;
    }

更简洁的代码

    bool detectCapitalUse(string word) {
        int i=0,sum=0,n=word.size();
        for(;i<n;i++)
            if(word[i]<='Z')
                sum++;     
         if(!sum||sum==word.size()||sum==1&&word[0]<='Z') 
             return true;
        return false;
    }

使用STL内置的count_if函数

   bool detectCapitalUse(string word) {
        int cnt=count_if(word.begin(),word.end(),[](char c){return c<='Z';});
        return cnt==0||cnt==word.size()||cnt==1&&word[0]<='Z';
    }