输入字符串有四种情况,大写开头小写结尾,小写开头大写结尾,大写开头大写结尾,小写开头大写结尾。当存在头两种情况时,后两种情况的字符串都可以无伤插入,然后处理头两种的大小数量关系就可以了,自己画个图答案一下子就出来了。
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
int N;
int ds,db,sames,sameb,ans;
string a;
while (cin >> N)
{
ans = 0;
ds=db=sames=sameb=0;
for (int i = 0; i<N; i++)
{
cin >> a;
if (a[0] - 'a' <= -7&&a[a.size() - 1] - 'a' <= -7)
sameb++;
else if(a[0]-'a'>=0&&a[a.size()-1]-'a'>=0)
sames++;
else if(a[0]-'a'>=0)
ds++;
else
db++;
for (int j = 1; j<a.size(); j++)
{
if (a[j] -'a'<=-7 && a[j - 1]-'a'>=0 )
{
ans++;
}
if (a[j] - 'a' >= 0 && a[j - 1] - 'a' <=-7 )
{
ans++;
}
}
}
if(ds+db!=0)
{
if(ds-db==0)
sames=0;
else if(ds>db)
ans+=ds-db-1;
else if(db>ds)
ans+=db-ds;
}
else if(sameb!=0)
ans+=1;
cout << ans << endl;
}
return 0;
}