构建短字符串
构建短字符串
http://www.nowcoder.com/questionTerminal/a83e1893f5df4285a1796b34e1e7c9b3
题解
难度:简单
知识点:map、字符串
解题分析:判断长字符串是否含短字符串时,主要通过长字符串含的字符及数量是否足够搭建短字符,所以可以使用map形成一个<char,int>的形式来判断,也可以使用数组来统计字符的数量来进行计算。
方法一
主要使用map形成一个<char,int>的对应方式来统计。
#include <bits/stdc++.h>
using namespace std;
int main()
{
string str1,str2;
cin>>str1>>str2;
map<char,int> 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<<"true";
else
cout<<"false";
return 0;
}方法二
因为字符是由26个组成,所以直接使用一个int[26]的数组来进行统计计算。
#include <bits/stdc++.h>
using namespace std;
int main()
{
string str1,str2;
cin>>str1>>str2;
int str[26]={0};
bool flag=true;
for(auto it : str2)
{
int num=it-'a';
str[num]++;
}
for(auto it : str1)
{
int num =it-'a';
str[num]--;
if(str[num]<0)
flag=false;
}
if(flag)
cout<<"true";
else
cout<<"false";
return 0;
}
查看19道真题和解析