有1个字符串,你需要把它弄成“前面若干字符是大写,后面的字符全是小写”的样子,例如:"AABBccdd"。 (但全大写和全小写均不合法)
请问最少需要几次才能达成目标
输入
输入包含一行一个字符串s (2≤∣s∣≤10^5 ),表示题中所述的字符串,保证只包含小写和大写字母。
输出
输出包含一行一个整数,表示最少的操作次数。
样例
输入
aaBB
输出
3
输入
AAAA
输出
1
———————————————————————————————————————————
代码:
#include<bits/stdc++.h>
using namespace std;
int p[100005];
int b[100005];
int main()
{
string s;
cin>>s;
int len=s.size();
for(int i=0;i<len;i++)
p[i+1]=p[i]+(s[i]>='a');
for(int i=len-2;i>=-1;i--)
b[i+1]=b[i+2]+(s[i+1]<='Z');
int minn=0x3f3f3f3f;
for(int i=1;i<len;i++)
minn=min(minn,p[i]+b[i]);
cout<<minn;
return 0;
}