[编程之美-10]字符串的包含问题
2017-05-07 22:30
232 查看
[题目描述] 给定一长字符串 a 和一段字符串 b 。请问, 如何最快的判断出短字符串 b 中的所有字符是否都在长字符串 a 中。
[Sample Input]
ABCD BAD
ABCD BCE
ABCD AA
[Sample Output]
true
false
true
基本解法:我们遍历字符串b,依次判断b中的每个字符是不是的都在字符串a中。
代码如下:
时间复杂度:O(m*n), 空间复杂度:O(1)
高效算法:思考角度,我们都知道ASCII码一共有127个,而题目所说的字符串都是由ASCII码组合而成。首先遍历字符串a,将a中每个字符转化为int类型(作为数组角码)。并开辟数组大小为128的bool类型count数组。count[a[i]] = true.接着去遍历字符串b,依次判断每个字符是否count[b[i]] == true.
时间复杂度:O(m+n), 空间复杂度:128B
[Sample Input]
ABCD BAD
ABCD BCE
ABCD AA
[Sample Output]
true
false
true
基本解法:我们遍历字符串b,依次判断b中的每个字符是不是的都在字符串a中。
代码如下:
#include<iostream> #include<string> using namespace std; bool stringContain(string &a, string &b); int main() { string a, b; while(cin>>a>>b) { if(stringContain(a, b)) cout<< "true" << endl; else cout<< "false" << endl; } return 0; } bool stringContain(string &a, string &b) { for(int i = 0; i < b.length(); i ++) { if(a.find(b[i]) > b.length()) return false; } return true; }
时间复杂度:O(m*n), 空间复杂度:O(1)
高效算法:思考角度,我们都知道ASCII码一共有127个,而题目所说的字符串都是由ASCII码组合而成。首先遍历字符串a,将a中每个字符转化为int类型(作为数组角码)。并开辟数组大小为128的bool类型count数组。count[a[i]] = true.接着去遍历字符串b,依次判断每个字符是否count[b[i]] == true.
#include<iostream> #include<string> #include<string.h> using namespace std; bool stringContain(string &a, string &b); int main() { string a, b; while(cin>>a>>b) { if(stringContain(a, b)) cout<< "true" << endl; else cout<< "false" << endl; } return 0; } bool stringContain(string &a, string &b) { bool count[128]; memset(count, false, sizeof(count)); for(int i = 0; i < a.length(); i ++) { count[a[i]] = true; } for(int i = 0; i < b.length(); i ++) { if(count[b[i]] == false) return false; } return true; }
时间复杂度:O(m+n), 空间复杂度:128B
相关文章推荐
- 程序员编程艺术:第二章、字符串是否包含及匹配/查找/转换/拷贝问题
- 程序员编程艺术:第二章、字符串是否包含及匹配/查找/转换/拷贝问题
- 编程之美3-1:字符串移位包含问题.
- 编程之美3.1字符串移位包含的问题的扩展问题
- 读程序员编程艺术第二章---字符串包含问题
- 【编程之美】字符串移位包含的问题
- 编程之美--3.1字符串移位包含的问题
- 程序员编程艺术--2、字符串包含问题
- 程序员编程艺术:第二章、字符串是否包含问题
- 程序员编程艺术学习笔记(二)字符串是否包含问题
- KMP算法之编程之美3.1字符串包含的问题
- 程序员编程艺术:第二章、字符串是否包含及匹配/查找/转换/拷贝问题
- H面试程序(10): 字符串包含问题
- 编程之美-3.1-字符串移位包含的问题
- 程序员编程艺术:第二章、字符串是否包含及匹配/查找/转换/拷贝问题
- 【编程之美】字符串移位包含的问题(续)
- H面试程序(10): 字符串包含问题
- 程序员编程艺术:第二章、字符串是否包含问题
- 读程序员编程艺术第二章---字符串包含问题(二)
- 编程之美 set 9 字符串移位包含问题