学习笔记之TAOCP--字符串是否包含问题(学习“结构之法”博客)

来源:互联网 发布:淘宝降价通知如何设置? 编辑:程序博客网 时间:2024/05/21 07:51

字符串是否包含问题: 

     str1:"abcdefgh"

     str2:"hgbsc"

 即判断str2是否被str1包含的问题。此问题如果不考虑复杂度的问题, 用最基本的方法即循环搜索的方式即可暴力求解。但其效率相对低下。

     在看“结构之法”的博客中有种将其映射为hashTable的方式能够在访问每个字母一次的情况下给出解答,较高效。

代码如下:

    

int main(){string str1="ABCDEFGHLMNOPQRS";string str2="DCGSRQPOM";int hash[26]={0};int num=0;for(int j=0;j<str2.length();j++){int index=str2[j]-'A';if(hash[index]==0){hash[index]=1;num++;}}for(int j=0;j<str1.length();j++){int index =str1[j]-'A';if(hash[index]==1){hash[index]=0;num--;if(num==0) break;}}if(num==0)cout<<"true"<<endl;else if(num>0)cout<<"false"<<endl;return 0;}

  还有一种基于素数乘法的算法,感觉这思维太活跃了。特记录此贴,以供自己学习。

原创粉丝点击