实现子串查找程序 C++版(2009年华为软件设计大赛编程题)
来源:互联网 发布:达芬奇调色软件下载 编辑:程序博客网 时间:2024/05/22 12:39
问题描述:
判断一个字符串(dst)是否是另一个字符串(src)的子串;
输出子串在母串中的第一次出现的起始位置;
匹配的时候不区分大小写;
不能使用库函数(使用库函数按 0 分计算);
要求实现函数:
unsigned int str_str(char * src, char *dst);
返回:如果dst是src的子串 则返回起始位置 如果不是 则返回0
输入:src 指向母串的指针; dst 指向子串的指针
示例
src->akrsd5859 dst->rsd
则返回3
src->Rstsawerst36ds dst->rst
则返回8
src->dfsge dst-> dfsgesa
则返回0
//创建时间20132/9/21//这个算法我记得有效率更高的,但是一时想不起来就随手敲了这个代码,如果有大神知道希望提醒#include <iostream>#include <string>using namespace std;unsigned int str_str(char *src,char *dst){if(strlen(src) < strlen(dst))//如果母串比子串短,直接退出return 0;for(unsigned int i = 0;i <= strlen(src) - strlen(dst);++i)//比较到俩字符串{unsigned int j;for(j = 0;j < strlen(dst);++j){//BEGIN这一段为不区分大小写代码的代码段,如果区分大小写删除此段代码if(((src[i+j] <= 'z' && src[i+j] >= 'a') || (src[i+j] <= 'Z' && src[i+j] >= 'A'))&& ((dst[j] <= 'z' && dst[j] >= 'a')|| (dst[j] <= 'Z' && dst[j] >= 'A'))){if(src[i+j] != dst[j] +32 && src[i+j] != dst[j] -32 && src[i+j] != dst[j])break;}else //ENDif(src[i+j] != dst[j]){break;}}if(j == strlen(dst))//完全匹配为{return i+1;}}return 0;}int _tmain(int argc, _TCHAR* argv[]){string str1,str2;cin>>str1;cin>>str2;cout<<str_str((char *)str1.c_str(),(char *)str2.c_str());return 0;}
- 实现子串查找程序 C++版(2009年华为软件设计大赛编程题)
- 【C程序练习】《2009年华为软件设计大赛》编程题 第2题,实现子串查找程序
- 报数游戏C++版(2009年华为软件设计大赛编程题)
- 2009年华为软件设计大赛两道编程题
- [C/C++]2009年华为软件设计大赛两道编程题
- 2013年华为编程大赛上机题
- 简单问题5——2009年华为软件设计大赛题
- 2013年华为校园编程大赛第一题
- 2011年华为编程大赛B卷第二道题
- 2010年华为编程大赛题目
- 2011年华为编程大赛题目
- 2011年华为杯校园编程大赛
- 2012年华为杯校园编程大赛决赛 类别:软件C/C++语言
- 软件设计大赛编程题《拼音字母》
- 第二届 “国信蓝点”软件设计大赛 C语言模拟题(附程序题 解题程序)
- 2012全国软件设计大赛编程大题
- 2014年华为校招机试题和多种代码实现(多个数的最大公约数,相同子串,单词计数)
- 2016年华为优招编程题
- 算法汇总
- gtk-query-immodules-2.0 > /usr/lib/gtk-2.0/2.10.0/gtk.immodules
- CPU 用户时间 系统时间
- 原子操作(atomic operation)
- 约瑟夫环问题华为机试题
- 实现子串查找程序 C++版(2009年华为软件设计大赛编程题)
- 【3次称12个球】12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球。
- C#多线程开发1:使用Thread类创建与启动线程
- mybatis 批量更新
- spring基础配置
- 行递增,列递增二位数组,找某个元素
- n行2n-1列动态规划
- 面试70问经典回答
- Android---缩放View