题目链接:http://acm.zzuli.edu.cn/problem.php?id=2413
时间限制: 1 Sec  内存限制: 128 MB

题目描述

小P对自己的母校很有感情,他看到一个字符串的时候,总是看一看字符串中的字母能不能组成他母校名字的英文缩写,现给定一个仅由英文字母构成的字符串。请你帮小P找一找能组成几个学校名字的英文缩写。字母不区分大小写。 

输入

第一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。
第二行为小P学校名字的英文缩写,名字缩写长度不超过10。 

输出

输出一个整数,表示字符串中包含学校名字缩写的个数。

样例输入

hLuTZAILjiTuyZz
ZZULI

样例输出

1

解题思路

我们只要求出学校的每个字母在字串中有多少个,算出最少的那个就行了。

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int val1[30], val2[30];
char str[10005], s[15];
int main() {
    int n, min_;
    while (~scanf("%s", str)) {
        min_ = 10000;
        scanf("%s", s);
        memset(val1, 0, sizeof(val1));
        memset(val2, 0, sizeof(val2));
        for (int i = 0; str[i]; i++) {
            if (str[i] >= 'A' && str[i] <= 'Z')
                val1[str[i] - 'A']++;
            else val1[str[i] - 'a']++;
        }
        for (int i = 0; s[i]; i++) {
            if (s[i] >= 'A' && s[i] <= 'Z')
                val2[s[i] - 'A']++;
            else val2[s[i] - 'a']++;
        }
        for (int i = 0; i < 26; i++) {
            if (val2[i])
                min_ = min(min_, val1[i] / val2[i]);
        }
        printf("%d\n", min_);
    }
    return 0;
}