首页 > 其他 > 详细

字符串是否包含问题

时间:2014-03-14 18:49:12      阅读:396      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
//假设这有两个分别由字母组成的字符串A另外字符串B,字符串B的字母数较字符串A少一些。
//什么方法能最快地查出字符串B所有字母是不是都在字符串A里?
//也就是说判断字符串B是不是字符串A的真子集(为了简化,姑且认为两个集合都不是空集,即字符串都不为空。)。为了简单起见,我们规定输入的字符串只包含大写英文字母。

//实现函数bool compare(string &A,string &B)


//int 32位,使用一个整数来hash
#include <iostream>
using namespace std;

bool compare(string &a,string &b)
{
    int hash_b=0;

    for(int i=0;i<b.length();i++) {
        hash_b|=(1<<(b[i]-A));
    }

    int hash_a=0;
    for(int i=0;i<a.length();i++) {
        hash_a|=(1<<(a[i]-A));
    }

    return hash_b==(hash_a&hash_b);
}

int main()
{
    string a("ABCDEFGHG");
    string b("BCDHGK");

    cout<<compare(a,b)<<"\n";

    return 0;
}
bubuko.com,布布扣

字符串是否包含问题,布布扣,bubuko.com

字符串是否包含问题

原文:http://www.cnblogs.com/mr-redrum/p/3598885.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!