1.2 字符串包含

题目:给定长字符串a和段字符串b,如何判断短字符串中所有字符均在长字符串a中?
示例:
a="ABCD", b="BAD" 返回true;
a="ABCD", b="BCE" 返回false;
a="ABCD", b="AAA" 返回true;
解法1:排序后轮询,拿着字符串b中的每一个字符去字符串a中查询

#include 
#include 
#include 
using namespace std;

bool stringcontain(string &a,string &b)
{
    sort(a.begin(),a.end());
    sort(b.begin(),b.end());
    for(int pa =0,pb=0;pb=a.length())||(a[pa]>b[pb]))
        {return false;}
        ++pb;
    }
    return true;
}
int main(int argc, char *argv[])
{
    string s1="ABCDE";
    string s2="AAAA";
    if(stringcontain(s1,s2))
        cout <<"true"<

解法2:位运算

#include 
#include 
using namespace std;

bool stringcontain(string &a,string &b)
{
    int hash=0;
    for(int i=0;i

你可能感兴趣的:(1.2 字符串包含)