【1092】To Buy or Not to Buy (20 分)

简介: 【1092】To Buy or Not to Buy (20 分)【1092】To Buy or Not to Buy (20 分)
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<cstring>
#include<string>
#include<algorithm>  
#include<map>
#include<vector>
#include<queue> 
using namespace std; 
//读第一串是hashTable对应颜色加1,读第二串对应颜色个数减1,很多题用了类似思想
//key:颜色个数<0则miss累加1
const int MAXN=1010;
//hashTable记录第一串中每种颜色的个数,用miss记录缺少的珠子个数
int hashTable[80]={0},miss=0;
//将数字和字母转换为hashTable的下标
int change(char c){ 
  if(c >= '0' && c<='9') return c-'0';   //数字
  if(c >= 'a' && c<='z')  return c-'a'+10; //小写字母,注意这里要加10,数组前10个位为数字
  if(c >= 'A' && c <='Z') return c-'A'+36;  //大写字母
}
int main(){   
  char whole[MAXN],target[MAXN];
  cin>>whole>>target;  //这里不可以getline
  int len1=strlen(whole);  //第一串的长度
  int len2=strlen(target);  
  for(int i=0;i<len1;i++){  //遍历第一串
    int id= change(whole[i]);  //字符-》hashTable下标
    hashTable[id]++;  //该颜色个数加1
  }
  for(int i=0;i<len2;i++){  //遍历第二串
    int id=change(target[i]);   //字符-》hashTable下标
    hashTable[id]--;  //该颜色个数减1
    if(hashTable[id]<0){  //该颜色个数小于0
      miss++;
    }
  }
  if(miss>0) printf("No %d\n",miss);  //有缺少
  else printf("Yes %d\n",len1-len2);   //有多余
  system("pause");
  return 0;
}
相关文章
|
存储 Linux C++
【PAT甲级 - C++题解】1092 To Buy or Not to Buy
【PAT甲级 - C++题解】1092 To Buy or Not to Buy
63 0
|
算法
LeetCode 123. Best Time to Buy and Sell Stock III
给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
100 0
LeetCode 123. Best Time to Buy and Sell Stock III
|
算法
LeetCode 121. Best Time to Buy and Sell Stock
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果您最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。
79 0
LeetCode 121. Best Time to Buy and Sell Stock
Buy a Shovel
Buy a Shovel
104 0
Buy a Shovel
1092. To Buy or Not to Buy (20) simple
#include using namespace std; int main(int argc, const char * argv[]) { // insert code here.
846 0