#include<stdio.h>
#define N 200
char s[N];
int judgeup(char c) {
if(c>='A'&&c<='Z')
return 1;
return 0;
}
int judgelo(char c) {
if(c>='a'&&c<='z')
return 1;
return 0;
}
int main() {
int lock,i,j,sum,n,h;
scanf("%d",&n);
while(n--) {
scanf("%s",s);
sum=0;lock=0;
for(i=0;s[i];i++) {
if(lock==0) {
if(judgelo(s[i])) {
sum++;
continue;
}
h=0;
for(j=i;s[j];j++) {
if(judgeup(s[j]))
h++;
else break;
}
if(h>=2) {
sum=sum+1+h;
i=j-1;
lock=1;
}
else {
sum+=2;
i=j-1;
}
}
else {
if(judgeup(s[i])) {
sum++;
continue;
}
h=0;
for(j=i;s[j];j++) {
if(judgelo(s[j]))
h++;
else
break;
}
if(h>=2) {
sum=sum+1+h;
i=j-1;
lock=0;
}
else {
sum+=2;
if(s[j]==0)//注意这个这组数据AAaAaAa
lock=0;
i=j-1;
}
}
}
if(lock==1)
sum++;
printf("%d\n",sum);
}
return 0;
}

最新文章

  1. 关于docker
  2. CSS实现的手风琴特效
  3. ECharts学习(2)--饼状图之南丁格尔图
  4. Android消息机制
  5. 从scrapy使用经历说开来
  6. Spring IoC小结
  7. IOS&amp;swift开发常用的网站
  8. 【 D3.js 高级系列 — 7.0 】 标注地点
  9. ActiveMQ可靠性机制
  10. YII CJson类
  11. apache动态编译与静态编译
  12. 201521123006 《java程序设计》 第9周学习总结
  13. C#调用windows api 实现打印机控制
  14. 解析js中作用域、闭包——从一道经典的面试题开始
  15. ansible命令应用基础
  16. kafka 重新分配partition
  17. 结对项目——四则运算GUI项目
  18. Go基础系列:Go实现工作池的两种方式
  19. laravel 数据库获取值的常用方法
  20. (转)在Eclipse中创建Maven多模块工程

热门文章

  1. 随机获取一个集合(List, Set)中的元素,随机获取一个Map中的key或value
  2. Java系列之JDBC和ODBC之间的差别与联系
  3. nyoj--92--图像有用区域(模拟)
  4. Elasticsearch日志收集
  5. 爬虫之 Requests库的基本使用
  6. 如何正确产看API
  7. WPF MVVM 关闭窗体
  8. 用LyX写中文幻灯片
  9. javascript实现双击网页自动滚动,单击滚动停止
  10. WPF 标题栏 右键窗口标题添加关于对话框