字符串子串查找strstr
问题:
charstr[]="1234xyz";char*str1=strstr(str,"34");得到str1="34xyz"方法1:
一个指针扫描,当首字母相同时两个指针扫描两个字符串比较。
代码如下:
#include <stdio.h>
#include <string.h>
#include <assert.h> char* mystrstr(const char* str1,const char* str2)//str1 is the original string
{
assert(str1 != NULL);
if(str2 == NULL) return (char*)str1;
while(str1 != '\0'){
if(*str1 != *str2) str1++;
else{
char* ori = str1;
char* des = str2;
while(*des != '\0'){
if(*ori == *des){
ori++;des++;
}
else break;
}
if(*des == '\0') return str1;
}
}
return NULL;
} int main(){
char ori[]="sdggdfhhttyusdfge";
char des[]="ttyu";
char* ret=mystrstr(ori,des);
printf("%s\n", ret);
return ;
}
结果是
[root@admin Desktop]# ./a.out
ttyusdfge
方法2:
类似的方法,练练手:
#include <stdio.h>
#include <string.h> char* mystrstr(const char* str1,const char* str2)//str1 is the original string
{
int len2 = strlen(str2);
int len1 = strlen(str1);
if(!len2) return (char*)str1;
while(len1 >= len2){
len1--;
if(!strcmp(str1,str2,len2)) return (char*)str1;
str1++;
}
}
return NULL;
} int main(){
char ori[]="sdggdfhhttyusdfge";
char des[]="ttyu";
char* ret=mystrstr(ori,des);
printf("%s\n", ret);
return ;
}
结果是
[root@admin Desktop]# ./a.out
ttyusdfge
字符串子串查找strstr的更多相关文章
- 字符串类——KMP子串查找算法
1, 如何在目标字符串 s 中,查找是否存在子串 p(本文代码已集成到字符串类——字符串类的创建(上)中,这里讲述KMP实现原理) ? 1,朴素算法: 2,朴素解法的问题: 1,问题:有时候右移一位是 ...
- 第四十一课 KMP子串查找算法
问题: 右移的位数和目标串没有多大的关系,和子串有关系. 已匹配的字符数现在已经有了,部分匹配值还没有. 前六位匹配成功就去查找PMT中的第六位. 现在的任务就是求得部分匹配表. 问题:怎么得到部分匹 ...
- 第41课 kmp子串查找算法
1. 朴素算法的改进 (1)朴素算法的优化线索 ①因为 Pa != Pb 且Pb==Sb:所以Pa != Sb:因此在Sd处失配时,子串P右移1位比较没有意义,因为前面的比较己经知道了Pa != Sb ...
- 数据结构开发(14):KMP 子串查找算法
0.目录 1.KMP 子串查找算法 2.KMP 算法的应用 3.小结 1.KMP 子串查找算法 问题: 如何在目标字符串S中,查找是否存在子串P? 朴素解法: 朴素解法的一个优化线索: 示例: 伟大的 ...
- 「LOJ#103」子串查找 (Hash
题目描述 这是一道模板题. 给定一个字符串 A A A 和一个字符串 B B B,求 B B B 在 A A A 中的出现次数.AAA 和 BBB 中的字符均为英语大写字母或小写字母. A A A 中 ...
- LOJ #103. 子串查找 (Hash)
题意 给定两个字符串 \(A\) 和 \(B\),求 \(B\) 在 \(A\) 中的出现次数. 思路 这是一道 \(KMP\) 的模板题. 不过 \(Hash\) 是个好东西,可以用 \(Hash\ ...
- [算法2-数组与字符串的查找与匹配] (.NET源码学习)
[算法2-数组与字符串的查找与匹配] (.NET源码学习) 关键词:1. 数组查找(算法) 2. 字符串查找(算法) 3. C#中的String(源码) 4. 特性Attribute 与内 ...
- Matlab 之 字符串数组查找
Matlab的优势在于向量操作,字符串操作往往费时费力,但是如果能充分利用Matlab自带的一些函数,也可以取得不错的效果.下面就介绍一下字符串数组查找的小技巧. 字符串数组我通常会选择应用cell格 ...
- C#:比较二个字符串,查找出相同字数和差异字符
;; i < n; i++) { ) == s2.Substring(i, )) /*同位 ...
随机推荐
- android进度条
android进度条 1.达到的效果 2.布局代码 先写一个my_browser.xml文件 存放WebView <?xml version="1.0" encoding=& ...
- MVC提交时验证
第一种 @using (Html.BeginForm("ProdPromotionEdit", "Product", FormMethod.Post, new ...
- 聊聊单元測试(一)——EasyMock
一.单元測试是保证软件质量的重要方法. 单元測试是对系统中某个模块功能的验证,但我们总会遇到这样那样的问题,导致測试代码非常难编写.最直接的一个原因便是强耦合关系,被測试者依赖一些不easy构造,比較 ...
- C++中public,protected,private访问
对于公有继承方式: (1)父类的public成员成为子类的public成员,允许类以外的代码访问这些成员:(2)父类的private成员仍旧是父类的private成员,子类成员不可以访问这些成员:(3 ...
- css2与css3的区别
css2与css3的区别 CSS3引进了一些新的元素新的特性,我收集以下,自己做了一个小结: animation(基础动画)eg: div{animation: myfirst 5s linear ...
- Unofficial Microsoft SQL Server Driver for PHP (sqlsrv)非官方的PHP SQL Server 驱动
原文 Unofficial Microsoft SQL Server Driver for PHP (sqlsrv) Here are unofficial modified builds of Mi ...
- jmeter 控制器
Critical Section Controller :
- c# 委托详解
1.委托声明 2.委托入门实例 namespace ConsoleApplication1 { public delegate void methodDelegate(string str); cla ...
- OpenSUSE13.1安装MongoDB
添加数据库源: sudo zypper ar http://download.opensuse.org/repositories/server:/database/openSUSE_13.1/serv ...
- C# WinForm程序退出的方法(转)
转自:http://www.cnblogs.com/yugen/archive/2010/08/10/1796864.html 1.this.Close(); 只是关闭当前窗口,若不是主窗体的话, ...