zoukankan      html  css  js  c++  java
  • PAT A1092

    题目链接

    这个题主要卡在散列上(hashmap)

    其实可以直接用map(char,int)

    尝试了一下用c自己手动构造hashmap的过程

    attention:如果是普通的数组,str[i]中的这个i一定要是个Int

    本题中的散列思想主要是,既然只有[0~9][a~z][A~Z],那我们可以把它对应到数组的0~9 10~36 ,,,这样,大大减小了空间的使用

    
    #include<iostream>
    #include<vector>
    #include <unordered_set>
    #include <unordered_map>
    #include <cstring>
    #include <stdio.h>
    #include <algorithm>
    using namespace std;
    int hashmap[256]={0};
    int sum=0;//the number of all
    int num=0;//the number of need
    int change(char c){
        if(c>='0'&&c<='9'){
            return c-'0';
        }
        else if(c>='a'&&c<='z'){
            return c-'a'+10;
    
        }
        else{
            return c-'Z'+40;//这里其实加36就行
        }
    }
    char c1[1010],c2[1010];
    int main(){
    
        scanf("%s",c1);
    
        scanf("%s",c2);
        bool flag= true;
        int len1=strlen(c1);
        for (int i = 0; i < len1; ++i) {
            hashmap[change(c1[i])]++;
            sum++;
        }
        int len2=strlen(c2);
        for (int i = 0; i < len2; ++i) {
            if(hashmap[change(c2[i])]){
                hashmap[change(c2[i])]--;
                sum--;
            }
            else{
                flag=false;
                num++;
            }
    
        }
        if(flag){
            printf("Yes %d",sum);
        }
        else{
            printf("No %d",num);
        }
    
        return 0;
    
    
    }
    
    为了自己,和那些爱你的人
  • 相关阅读:
    gems gems gems
    poj 6206 Apple
    lightoj1341唯一分解定理
    lightoj1370欧拉函数
    约瑟夫环lightoj1179
    拓展欧几里得算法
    RMQ算法
    poj1502MPI Maelstrom
    poj1860Currency Exchange
    生成全排列
  • 原文地址:https://www.cnblogs.com/zhmlzhml/p/15024475.html
Copyright © 2011-2022 走看看