/*
description:
长字符串s1,和短字符串s2
判断s2是否是s1的子集。
字母都是大写。
是输出true
否输出false
使用位运算法,相当于每个位作为一个hash值。
author: JasonZhou
date: 2016-03-10
*/
#include <iostream>
using namespace std;
bool StringContain(string s1,string s2)
{
int hash=0;
for (int i=0;i<s1.length();i++)
{
hash|=(1<<(s1[i]-'A'));
}
//cout<<hex<<hash<<endl;
for (int m=0;m<s2.length();m++)
{
if ( ( hash& (1<<(s2[m]-'A'))) ==0 )
{
return false;
}
}
return true;
}
int main()
{
string s1="AFCGHMN";
string s2="AMN";
if(StringContain(s1,s2))
cout<<"true"<<endl;
else
cout<<"false"<<endl;
return 0;
}
字符串包含 位运算法
最新推荐文章于 2024-03-23 19:23:43 发布