P7183题解
Ptilopsis_w · · 题解
题意
有一个字符串
思路
-
题目很简单,对着样例搞一下就可以发现,在两个大写字母间,不管怎么插入占位符,只要数量相同效果就一样,所以思路就是用占位符从头开始一个个地将大写字母“推”到相应的位置上
-
对于已经对齐位置的大写字母,可以忽略掉,所以只看当前大写字母需要几个占位符,并累计到答案变量
ans 里,当前大写字母的位置就是原来的位置i 加上ans ,而占位符数量就是4-(i+ans)%4,至此,问题已经解决
代码
tips: STL中有个函数isupper(),可以用来判断一个字符是否为大写字母
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
char ch[205];
scanf("%s", ch);
int n = strlen(ch);
int ans = 0;
for(int i = 0; i < n; i++)
{
if(isupper(ch[i]) and (i+ans)%4 != 0)
ans += 4-(i+ans)%4;
}
printf("%d", ans);
return 0;
}