《编程之法》:字符串的包含
来源:互联网 发布:soap json 编辑:程序博客网 时间:2024/05/14 03:07
题目
给定一长字符串a和一短字符串b。请问,如何最快地判断出短字符串b中的所有字符是否都在长字符串a中。
思路
设一个整数hash,对于a中的每一位,通过’|’运算在二进制hash对应的位上置位。然后对于b中的每一位,通过’&’运算看是否hash中该位上是否有置位,以此来判断是否有包含该字符。
代码
bool StringContain(const string a,const string b) { int hash = 1; for (int i = 0; i < a.length(); ++i) { hash |= (1 << (a[i] - 'A')); } for (int j = 0; j < b.length(); ++j) { if ((hash & (1 << (b[j] - 'A'))) == 0) { return false; } } return true;}int main() { string a = "ABCDE"; string b = "DEA"; string c = "DEF"; if (StringContain(a, b)) { cout<<"a contains b"<<endl; } else { cout<<"a doesn't contain"<<endl; } if (StringContain(a, c)) { cout<<"a contains c"<<endl; } else { cout<<"a doesn't contain c"<<endl; } return 0;}
运行结果
a contains ba doesn't contain cProcess finished with exit code 0
0 0
- 编程之法2----字符串的包含
- 《编程之法》1.2字符串的包含
- 编程之法(字符串的包含)
- 《编程之法》:字符串的包含
- 编程之法--字符串包含
- 编程之美之字符串移位包含的问题
- 编程之美:第三章 结构之法 3.1字符串移位包含的问题
- 《编程之美》3.1 字符串移位包含的问题
- [编程之美3.1]字符串移位包含的问题
- 字符串移位包含的问题(编程之美)
- 【编程之美】字符串移位包含的问题
- 编程之美--3.1字符串移位包含的问题
- 编程之美3.1 字符串移位包含的问题
- 3.1- 编程之美-字符串移位包含的问题
- 编程之美------3.1 字符串移位包含的问题
- [编程之美] PSet3.1 字符串移位包含的问题
- 字符串移位包含的问题(编程之美)
- 编程之美 3.1 字符串移位包含的问题
- <36>python学习笔记——论事件驱动与异步IO
- 自定义注解【一】
- 【BZOJ3963】【ACM-WF2011】MachineWorks(CDQ分治+斜率优化)
- 子div浮动,父div的如何撑起来
- vb.net 教程 1-7 数据类型:Boolean
- 《编程之法》:字符串的包含
- Linux 用root账号创建一个新的登录账号
- POJ 3576
- 关于Warning: 'https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/' already的解决方法
- 有关opencv的学习(12)—积分图
- CF Lucky Numbers (easy) (dfs简单枚举/next_permutation暴力)
- 进程间通信(三)-----共享内存
- Java中的多线程你只要看这一篇就够了
- 关于margin重叠的一些理解