首页 > 其他 > 详细

1092. To Buy or Not to Buy (20)-map

时间:2017-02-11 12:27:01      阅读:140      评论:0      收藏:0      [点我收藏+]

给出两个字符串,判断第二个字符串中的字符是否都出现在第一个中。

是,则输出Yes,以及多余的字符的个数。

否,则输出No,以及缺失的个数。

技术分享
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string.h>
using namespace std;
const int maxn=1000+5;
const int maxbeads=62;
int numshop[maxbeads];
int numeva[maxbeads];
int vis[maxbeads];
int main()
{
    char shop[maxn],eva[maxn];
    scanf("%s %s",shop,eva);
    int len1=strlen(shop);
    int len2=strlen(eva);
    char ch;
    memset(numshop,0,sizeof(numshop));
    memset(numeva,0,sizeof(numeva));
    memset(vis,0,sizeof(vis));
    for(int i=0;i<len1;i++){
        ch=shop[i];
        if(0<=ch&&ch<=9){
            numshop[ch-0]++;
        }
        else if(a<=ch&&ch<=z){
            numshop[ch-a+10]++;
        }
        else if(A<=ch&&ch<=Z){
            numshop[ch-A+36]++;
        }

    }
    for(int i=0;i<len2;i++){
        ch=eva[i];
        if(0<=ch&&ch<=9){
            numeva[ch-0]++;
            vis[ch-0]=1;
        }
        else if(a<=ch&&ch<=z){
            numeva[ch-a+10]++;
            vis[ch-a+10]=1;
        }
        else if(A<=ch&&ch<=Z){
            numeva[ch-A+36]++;
            vis[ch-A+36]=1;
        }

    }
    bool flag=true;
    int left=0,miss=0;
    for(int i=0;i<maxbeads;i++){
        if(!vis[i]){
            left+=numshop[i];
            continue;
        }
        if(numshop[i]>=numeva[i]){
            left+=numshop[i]-numeva[i];
        }
        else{
            miss+=numeva[i]-numshop[i];
            flag=false;
        }
    }
    if(flag)
        printf("Yes %d",left);
    else
        printf("No %d",miss);
    return 0;
}
View Code

 

1092. To Buy or Not to Buy (20)-map

原文:http://www.cnblogs.com/chenxiwenruo/p/6388818.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!