题解

难度:简单

知识点:map、字符串

解题分析:判断长字符串是否含短字符串时,主要通过长字符串含的字符及数量是否足够搭建短字符,所以可以使用map形成一个<char,int>的形式来判断,也可以使用数组来统计字符的数量来进行计算。

方法一

主要使用map形成一个<char,int>的对应方式来统计。

#include &lt;bits/stdc++.h&gt;
using namespace std;
int main()
{
    string str1,str2;
    cin&gt;&gt;str1&gt;&gt;str2;
    map&lt;char,int&gt; m;   
    bool flag = true;   //用来判断能不能构建短字符串
    for(auto it : str2)
        m[it]++;
    for(auto it : str1)
    {
        if(m[it])
            m[it]--;
        else
            flag = false;
    }
    if(flag)
        cout&lt;&lt;&quot;true&quot;;
    else
        cout&lt;&lt;&quot;false&quot;;
    return 0;
}

方法二

因为字符是由26个组成,所以直接使用一个int[26]的数组来进行统计计算。

#include &lt;bits/stdc++.h&gt;
using namespace std;
int main()
{
    string str1,str2;
    cin&gt;&gt;str1&gt;&gt;str2;
    int str[26]={0};
    bool flag=true;
    for(auto it : str2)
    {
        int num=it-&#39;a&#39;;
        str[num]++;
    }
    for(auto it : str1)
    {
        int num =it-&#39;a&#39;;
        str[num]--;
        if(str[num]&lt;0)
            flag=false;
    }
    if(flag)
        cout&lt;&lt;&quot;true&quot;;
    else
        cout&lt;&lt;&quot;false&quot;;
    return 0;
}