HDOJ 2087 基本字符串处理
2012-09-22 00:36
260 查看
题目链接
题目大意:给你两个字符串,让你求第二个字符串在第一个字符串中出现了几次,注意不能有重叠的区间。
由于这题的数据不大,所以朴素的字符串匹配就能解决问题。
代码如下:
思想也是最简单的,就是回朔。
当然也可以用KMP算法。
代码如下:
思想也就不多说了,KMP嘛!
题目大意:给你两个字符串,让你求第二个字符串在第一个字符串中出现了几次,注意不能有重叠的区间。
由于这题的数据不大,所以朴素的字符串匹配就能解决问题。
代码如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> char str[1005],substr[1005]; int len1,len2,cnt; char *p,*q; int main() { do { cnt=0; scanf("%s",str); if(str[0]=='#') break; scanf("%s",substr); len1=strlen(str); len2=strlen(substr); p=str; q=substr; while(p&&p-str<=len1) //防止p越界 { if(strncmp(p,q,len2)==0) { cnt++; if(p+len2-str>=len1-1) //防止p越界 break; else p+=len2; } else p++; } printf("%d\n",cnt); }while(1); return 0; }
思想也是最简单的,就是回朔。
当然也可以用KMP算法。
代码如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> char str[1005]; char substr[1005]; int next[1005]; int cnt; void getnext() //得到next数组 { int len=strlen(substr); next[0]=-1; int j=-1; for(int i=1;i<len;i++) { while(substr[j+1]!=substr[i]&&j>=0) j=next[j]; if(substr[j+1]==substr[i]) { next[i]=j+1; j++; } else next[i]=-1; } } void getans() { int len1=strlen(str),len2=strlen(substr); int j=-1; for(int i=0;i<len1;i++) { while(str[i]!=substr[j+1]&&j>=0) j=next[j]; if(str[i]==substr[j+1]) { j++; if(j==len2-1) //匹配成功后的操作 { j=-1; //把j设为-1这样就能继续寻找 cnt++; } } } printf("%d\n",cnt); } int main() { do { cnt=0; scanf("%s",str); if(str[0]=='#') break; scanf("%s",substr); getnext(); getans(); }while(1); //system("pause"); return 0; }
思想也就不多说了,KMP嘛!
相关文章推荐
- hdoj 2203 亲和串(字符串处理问题(strstr函数的巧用))
- hdoj2087剪花布条(大字符串截取小字符串)
- hdoj 2087 剪花布条 【字符串】
- HDOJ/HDU 1982 Kaitou Kid - The Phantom Thief (1)(字符串处理)
- hdoj1039简单题、字符串处理
- hdoj 1004 Let the balloon rise (字符串处理问题)
- hdoj1075 What Are You Talking About(STL map处理字符串)
- 【Objective-C】OC中字符串(NSString)的基本概念和常用处理方法
- java基本字符串处理
- POJ 3366//基本的字符串处理!
- .NET/Dot Net学习笔记---.net理解,C#.net的基本类型,字符串转义字符处理..
- hdoj 2072 单词数 【字符串处理】
- hdoj-3000-字符串处理
- HDOJ 1048字符串处理
- PHP基本语法第四章-字符串的处理
- HDOJ/HDU 1073 Online Judge(字符串处理~)
- hdoj 3849 By Recognizing These Guys, We Find Social Networks Useful【双连通分量求桥&&输出桥&&字符串处理】
- HDOJ/HDU 1073 Online Judge(字符串处理~)
- python字符串基本处理
- hdoj 1237 简单计算器 【字符串处理】