不知道题目是啥

发布时间:2024年01月10日

本题是学校的集训里的题,所有不知道题目名字是啥,直接看题目就好

解题思路:因为字符串只含有小写字母,所以可以创建两个数组分别来存s和t的每个字母出现次数,然后遍历数组,如果s字符串中的某个字母比t的小,说明不能匹配,答案为0,否则就找s字符串中某的字母数量除t字符串中某个字母数量的最小值(前提是某个字母数量都不为0)

下面是c++代码:

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    int t, Min = 10e5;
    string S, T;
    int arr1[26] = { 0 }, arr2[26] = { 0 };
    cin >> t;
    for (int i = 0; i < t; i++) {
        for (int j = 0; j < 26; j++) {
            arr1[j] = 0;
        }
        for (int j = 0; j < 26; j++) {
            arr2[j] = 0;
        }
        Min = 10e5;
        cin >> S >> T;
        for (int j = 0; j < S.length(); j++) {
            arr1[(int)(S[j] - 97)]++;
        }
        for (int j = 0; j < T.length(); j++) {
            arr2[(int)(T[j] - 97)]++;
        }

        for (int j = 0; j < 26; j++) {
            if (arr1[j] < arr2[j]) {
                Min = 0;
                break;
            }
            if(arr1[j] != 0 && arr2[j] != 0){
                Min = min(Min,arr1[j] / arr2[j]); 
            }
        }
        cout << Min << endl;
    }
    return 0;
}

文章来源:https://blog.csdn.net/2301_81718511/article/details/135514402
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。