2184: 打字员

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:48 解决:22

题目描述

有一个打字员,他打字的时候有个习惯,从来不用 Shift 来切换大小写,只用 Caps Lock。

现在给他一个地铁站的名字,你需要写一个程序来告诉他,他需要敲击多少下键盘才能打出 这个地铁站名。

输入

第一行输入一个数字 n (n<1000),表示共有多少个需要处理的车站名。从第 2 到第 n+1 行是这 n 个车站名。

车站名由英文字母构成,名字的长度不会超过 100 个字符。已知开始时 键盘是输入小写字母的状态。

输出

这个打字员敲击键盘的次数。

样例输入 复制

5
BeiJingDaXueDongMen
AAAaaaBBBbbbABAB
AmericanRAILWAY
AaAaAa
DFjfkdaB

样例输出 复制

31
21
18
12
11

提示

#include<bits/stdc++.h>
using namespace std;

int main(){
    string s;
    int n;
    cin>>n;
    for (int i=1;i<=n;i++) {
    	cin>>s;
    	int cnt=0;  //当前字符串需要敲击键盘的次数
    	int flag=0; //当前大小写状态,0为小写,1为大写
    	for (int j=0;j<s.length();j++) {
    		if (s[j]>='a'&&s[j]<='z'&&flag==1) {
    			cnt+=2;
    			flag=0;
			}else if (s[j]>='A'&&s[j]<='Z'&&flag==0){
				cnt+=2;
				flag=1;
			}else {
				cnt+=1;
			}
	    }
	    cout<<cnt<<endl;
	}
	return 0;
}