字符串
来源:互联网 发布:华泰证券软件下载 编辑:程序博客网 时间:2024/06/06 00:47
根据以下网站的文章整理:
http://developer.51cto.com/art/201207/347641.htm
问题:假设这有一个各种字母组成的字符串,假设这还有另外一个字符串,而且这个字符串里的字母数相对少一些。从算法是讲,什么方法能最快的查出所有小字符串里的字母在大字符串里都有?
比如,如果是下面两个字符串:String 1: ABCDEFGHLMNOPQRS String 2:DCGSRQPOM
答案是true,所有在string2里的字母string1也都有。
如果是下面两个字符串:String 3: ABCDEFGHLMNOPQRS String 4:DCGSRQPOZ
答案是false,因为第二个字符串里的Z字母不在第一个字符串里。【以下分析、代码均默认第一个参数是短的字符串str1,第二个参数是长字符串str2.】
1.最最笨的办法应该是两个for循环。依次取str1(较短的字符串)的每个字符,顺次在str2中搜寻。(代码如下:)
bool fun_1(char *str1,char *str2)
{
char ch;
for(int i=0;i<strlen(str1);i++)
{
ch = str1[i];
for(int j=0;j<strlen(str2);j++)
{
if(ch==str2[j]) continue;
if(j==strlen(str2)) return false;
}
}
return true;}
当然,对于上面的方法可以稍加改进。对str1和str2分别进行去除重复字母的处理。这样,上述的循环次数就会减少,相应的,会增加对两个字符串的处理时间。(在此不再赘述)
2.对于两个字符串进行相同的处理,对字母A - Z赋予素数1,2,3,5...
计算出str1(较长的字符串)的每个字母对应的素数乘积(不计算重复的)sum;
依次取str2(较短的)每个字母对应的素数与sum相除(重复的只计算一次),得出最终的结果为整数,则表示返回结果应为true,否则,为false.(代码略)
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- 字符串
- DataGridView图像文本单元格
- 肖特基二极管
- Cocos2d触摸分发原理
- 献给不知道自己该干什么的朋友—值得一看
- POJ 1011 (DFS+剪枝)
- 字符串
- Easyui自定义validate验证
- oracle解锁
- 关于Filter中的两个异常,重定向后要加Return
- 遍历List 同时 remove 元素
- 找出数据库的所有序列
- linux 下 tomcat 自动启动
- PHP使用open-flash-chart生成点线图、柱形图、饼图
- 使用Spring的jdbcTemplate进一步简化JDBC操作