链接:https://ac.nowcoder.com/acm/contest/5954/A
来源:牛客网
题目描述
Sumo家的猫非常喜欢滚键盘,每次Sumo开着电脑离开一小会儿,回来的时候都能在屏幕上看到一串神秘代码。今天,Sumo又得到了这么一串神秘代码。当他盯着屏幕上这串东西沉思的时候,突然发现它只包含大小写英文字母,又想到自己的键盘这几天两个Shift键都坏掉了——也就是说只能通过CAPSLOCK键来切换英文大小写了。于是他很好奇,这次滚键盘的过程中,他家的猫至少摁了几次CAPSLOCK键呢?Sumo记得他刚离开的时候,键盘的大写锁定是开的(也就是说输的是大写字母)。
这个算是比较简答的题目,只要看清题意,大小写之分就ok了
只需统计都是小写字母的字串段有sum个,基本就ok了
不考虑头尾字串,在中间的小写字母串一段就是按了俩下;
再来考虑4种情况,
- 头尾都为大写字串,则共按下2*sum;
- 头为大,尾为下,最后一个只有改变一次,故2*sum-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;
}