字符串处理------包含
来源:互联网 发布:数控车床编程代码讲解 编辑:程序博客网 时间:2024/06/02 03:33
知识梳理—-字符串
二. 字符串包含
题目描述: (此题是我2016年4月15腾讯实习生一面时的一道面试题)
给定两个字符串str1和str2,请尽可能快的判断str2中的字符是否全都在str1中出现.
实现的方法还是有蛮力轮询和带技巧的方法之分:
- 蛮力轮询:
对于str2中的每个字符串,都逐个与str1中的字符进行比较,查看是否包含在str1中.(时间复杂度O(mn))
#include <string>#include <iostream>using namespace std;bool stringContain(string &str1, string &str2);int main(){ string str1 = "haha, just cool."; string str2 = "cool"; string str3 = "gaga"; if(stringContain(str1, str2)) cout << "str2 in str1." << endl; else cout << "str2 not in str1." << endl; if(stringContain(str1, str3)) cout << "str3 in str1." << endl; else cout << "str3 not in str1." << endl; return 0;}bool stringContain(string &str1, string &str2){ for(int i = 0; i < str2.length(); i++) { int j; for(j = 0; j < str1.length(); j++) { if(str2[i] == str1[j]) break; } if(j >= str1.length()) return false; } return true;}
也可以在蛮力轮询时,先将两个字符串进行排序:
#include <algorithm>bool stringContain(string &str1, string &str2){ sort(str1.begin(), str1.end()); sort(str2.begin(), str2.end()); for(int i = 0, j = 0; j < str2.length();) { while(i < str1.length() && str1[i] < str2[j]) i++; if(i < str1.length() || str1[i] > str2[j]) return false; j++; } return true;}
2 .使用素数相乘:
让每个字符都对应一个素数,然后分别将str1和str2中的对应素数连乘得到num1和num2,然后用num1除以num2,若结果没有余数即为str1包含str2,否则不包含.(次方法的一个问题是,字符稍多就会产生连乘结果太大而溢出.)
素数相乘法,代码略......
3 .使用一个数组记录str1中每个字符的出现次数(ASCII字符有256个),操作方法是,定义一个长度为256的int型数组初始化为0,遍历str1,将下标为出现的字符的对应int值的元素值+1,然后遍历str2,查看数组对应下标元素的值,若有为0的情况则表示不包含,否则为包含.
bool stringContain(string &str1, string &str2){ int num[256] = {0}; for(int i = 0; i < str1.length(); i++) { num[int(str1[i])] += 1; } for(int j = 0; j < str2.length(); j++) { if(num[int(str2[j])] == 0) return false; } return true;}
1 0
- 字符串处理------包含
- Oracle字符串处理之包含
- shell字符串包含空格处理
- 文本域中字符串包含回车的处理
- ios nsstring 字符串包含引号 处理方法
- ios nsstring 字符串包含引号 处理方法
- js处理字符串是否包含某个字符
- json字符串中,包含函数的处理
- EL表达式处理字符串 是否 包含 某字符串 截取 拆分
- 字符串处理面试题_字符串包含问题
- EL表达式处理字符串 是否 包含 某字符串 截取 拆分...............
- EL表达式处理字符串 是否 包含 某字符串 截取 拆分...............
- EL表达式处理字符串 是否 包含 某字符串 截取 拆分...............
- EL表达式处理字符串 是否 包含 某字符串 截取 拆分...............
- ABAP中字符串的处理(包含特殊字符)
- 使用MessageFormat处理包含占位符的字符串
- C++ 处理输入包含特定信息的字符串
- 对包含数据的url(字符串)的处理
- 将ubuntu屏幕调大
- linux centos开启 80、22、3306端口方案
- UVA - 1644 - Prime Gap(找相邻素数差值)
- Makefile文件的编写
- 【不断更新贴】总结编程的技巧、语法等,需要多敲代码、记忆掌握
- 字符串处理------包含
- Sublime Text 3安装与使用
- Scalaz(40)- Free :versioned up,再回顾
- JDK+MyEclipse+Tomcat配置
- IOS开源项目学习---oschina
- flume高并发优化——(1)load_balance
- [剑指offer]合并两个排序的链表
- UISearchDisplayController灰色遮罩偏移
- [转]CocoaPods的安装使用 及Ruby环境的配置