您的位置:首页 > 其它

CodeForces 518B Tanya and Postcard (题意,水题)

2016-07-10 00:19 519 查看
点击打开链接

题意分析:题目读得有点晕,看了看网上的题解,其实不难。第一种情况判断两行字符串有多少字母是相同的,

                    将每个字母相同的个数加起来再输出。第二种情况是求两行字符串有多少字符值相同但大小写不同。

                    注意再统计完第一种情况后要将一样的字母减去才能够去统计第二种情况。

#include<iostream>
#include<algorithm>
#include<cstring>
#include<iomanip>
#include<cctype>
#include<string>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#define LL long long

using namespace std;
const int maxn = 200000 + 10;
char ch1[maxn], ch2[maxn];
int cnt1[60],cnt2[60];
int main()
{
scanf("%s%s",ch1, ch2);
int len1 = strlen(ch1), len2 = strlen(ch2);
memset(cnt1, 0, sizeof(cnt1));
memset(cnt2, 0, sizeof(cnt2));
for(int i = 0 ; i < len1; i++)
{
cnt1[ch1[i] - 'A']++;
}
for(int i = 0; i < len2; i++)
{
cnt2[ch2[i] - 'A']++;
}
int ans, ans1 = 0, ans2 = 0;
for(int i = 0; i < 63; i++)
{
ans = cnt1[i] < cnt2[i] ? cnt1[i] : cnt2[i];
cnt1[i] -= ans;
cnt2[i] -= ans;
ans1 += ans;
}
for(int i = 0; i < 26; i++)
{
ans = min(cnt1[i], cnt2[i - 'A' + 'a']) + min(cnt2[i], cnt1[i - 'A' + 'a']);
ans2 += ans;
}
printf("%d %d\n",ans1, ans2);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  水题