题目链接: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;
}