“21天好习惯“第一期-17

调皮的猫

题目描述
Sumo家的猫非常喜欢滚键盘,每次Sumo开着电脑离开一小会儿,回来的时候都能在屏幕上看到一串神秘代码。今天,Sumo又得到了这么一串神秘代码。当他盯着屏幕上这串东西沉思的时候,突然发现它只包含大小写英文字母,又想到自己的键盘这几天两个Shift键都坏掉了——也就是说只能通过CAPSLOCK键来切换英文大小写了。于是他很好奇,这次滚键盘的过程中,他家的猫至少摁了几次CAPSLOCK键呢?Sumo记得他刚离开的时候,键盘的大写锁定是开的(也就是说输的是大写字母)。

这个算是比较简答的题目,只要看清题意,大小写之分就ok了
只需统计都是小写字母的字串段有sum个,基本就ok了
不考虑头尾字串,在中间的小写字母串一段就是按了俩下;
再来考虑4种情况,
头尾都为大写字串,则共按下2
sum;
头为大,尾为下,最后一个只有改变一次,故2sum-1;
头为小,也是改变俩次,故无影响,4也就不用看了;
只看最后的子串是否为小写;
分别只需判断是2sum还是2sum-1;

#include <stdio.h>
#include <string.h>
int main()
{
   char a[100003];
    scanf("%s",a);
    int x,i,k=0,sum=0;
    x=strlen(a);
    for(i=0;i<x;i++)
    {
       while(a[i]>='A'&&a[i]<='Z')
       {i++;}
       while(a[i]>='a'&&a[i]<='z')
       {i++;k=1;}
        if(k)
            sum++;
        k=0;
        i--;
    }
    if(a[x-1]>='A'&&a[x-1]<='Z')
        sum=sum*2;
    else sum=2*sum-1;
    printf("%d",sum);
    return 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值