1.2字符串包含
来源:互联网 发布:美容美发管理软件源码 编辑:程序博客网 时间:2024/06/18 02:37
判断字符串A中是否包含字符串B。
方法一:两遍for循环暴力破解。也是我天梯PAT里L1超时的算法。很渣。
方法二:建立哈希映射,开int s[200]数组 将对应的 A[i]存入S[A[i]]中 置1 。之后遍历B数组。判断S[B[i]]是否为1。若为1则是A组中字符,若为0则break跳出。
下面给出书中 时间复杂度为O(m+n) 空间复杂度为O(1)的算法。超棒。然而位运算挺难懂。
用hashs int整型数来给每个字符标号。具体代码如下
#include <iostream>
#include <string>
using namespace std;
int hashs=0;
bool StringContain(string &a,string &b)
{
for(int i=0;i<a.length();++i)
hashs|=(1<<(a[i]-'A')); //与‘A'的差值寻找它对应的二进制。 再用hashs 或 上结果 (二进制中运算)
for(int i=0;i<b.length();++i)
{
if((hashs&(1<<(b[i]-'A')))==0) //判断hashs 与 上B中差值的结果。若为0则此时符号无标记跳出。
return false;
}
return true;
}
int main()
{
string a,b;
cin>>a>>b;
int c;
c=StringContain(a,b);
cout<<c<<endl<<hashs;
return 0;
}
个人认为方法二挺好的。空间量完全可以接受。毕竟只是在ASCII码表中。而且简单易懂,不容易出错
- 1.2字符串包含
- 1.2字符串包含
- 1.2 字符串包含
- 字符串包含
- 包含字符串
- 字符串包含
- 字符串包含
- 字符串包含
- 字符串包含
- 字符串包含
- 字符串包含
- 字符串包含
- 字符串包含
- 字符串包含
- 字符串包含
- 字符串包含
- 字符串包含
- 字符串包含字符串
- Python案例-开发之路-计算器
- 提问的智慧,大致看了一下,很多点没消化,要多看几遍,多理解。感谢作者分享!
- Problem D: C语言习题5.25--文件操作2
- mysql配置优化
- 使用 RMI + ZooKeeper 实现远程调用框架
- 1.2字符串包含
- ML学习笔记(一):naive bayas
- 第17章 网络编程
- 高性能服务器架构思路
- Android touch冲突解决小记
- LINQ中ForEach方法的使用
- Android中LruCache到底是如何配合LinkedHashMap实现LRU算法
- 新菜鸟的诞生
- C语言基础 for循环计算1到100的累加和