博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 3461Oulipo
阅读量:4464 次
发布时间:2019-06-08

本文共 1678 字,大约阅读时间需要 5 分钟。

题目链接:http://poj.org/problem?id=3461

统计字符串出现的次数

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #define dinf 0x3f3f3f3f 12 typedef long long ll; 13 //const int Max=(1<<16)+10; 14 using namespace std; 15 #define SIZE 100000005 16 17 const int N = 100000005; 18 int m_next[N]; 19 char S[N],T[N]; 20 int slen, tlen; 21 22 void getNext() 23 { 24 int j, k; 25 j = 0; k = -1; m_next[0] = -1; 26 while(j < tlen) 27 if(k == -1 || T[j] == T[k]) 28 m_next[++j] = ++k; 29 else 30 k = m_next[k]; 31 32 } 33 /* 34 返回模式串T在主串S中首次出现的位置 35 返回的位置是从0开始的。 36 */ 37 int KMP_Index() 38 { 39 int i = 0, j = 0; 40 getNext(); 41 42 while(i < slen && j < tlen) 43 { 44 if(j == -1 || S[i] == T[j]) 45 { 46 i++; j++; 47 } 48 else 49 j = m_next[j]; 50 } 51 if(j == tlen) 52 return i - tlen+1; 53 else 54 return -1; 55 } 56 /* 57 返回模式串在主串S中出现的次数 58 */ 59 int KMP_Count() 60 { 61 int ans = 0; 62 int i, j = 0; 63 64 if(slen == 1 && tlen == 1) 65 { 66 if(S[0] == T[0]) 67 return 1; 68 else 69 return 0; 70 } 71 getNext(); 72 for(i = 0; i < slen; i++) 73 { 74 while(j > 0 && S[i] != T[j]) 75 j = m_next[j]; 76 if(S[i] == T[j]) 77 j++; 78 if(j == tlen) 79 { 80 ans++; 81 j = m_next[j]; 82 } 83 } 84 return ans; 85 } 86 int main() 87 { 88 89 int TT; 90 int i, cc; 91 string str; 92 cin>>TT; 93 while(TT--) 94 { 95 getchar(); 96 97 scanf("%s %s",&T,&S); 98 slen = strlen(S); 99 tlen = strlen(T);100 printf("%d\n",KMP_Count());101 102 //cout<<"模式串T在主串S中首次出现的位置是: "<

 

转载于:https://www.cnblogs.com/pter/p/5691720.html

你可能感兴趣的文章
Asp.Net 4.0 新特性 系列 之一 从页面标记<%%>说起
查看>>
iPhone开发之深入浅出 (2) — ARC之@property使用
查看>>
【随手记】学校要求心理学核刊信息整理
查看>>
Hadoop简单安装配置
查看>>
ssl2331&&OJ1373-鱼塘钓鱼 之2【贪心堆优化】
查看>>
操作MySQL,使用ezSQL,简单而方便
查看>>
HTML常见标签
查看>>
HDU 2062 Subset sequence
查看>>
SPOJ 694 (后缀数组) Distinct Substrings
查看>>
HDU 4866 Shooting 扫描线 + 主席树
查看>>
证券从业资格考试考试心得
查看>>
Linux下Web性能压力测试工具http_load使用教程
查看>>
JVM(一),谈谈你对java的理解
查看>>
搜索的应用-分配货物
查看>>
004.ES2015和ES2016新特性--块级作用域变量
查看>>
Vue入门之HelloWorld
查看>>
网络连接跃点数问题
查看>>
用户职责请求组查询
查看>>
怎样让心情保持平静?
查看>>
error LNK1281: 无法生成 SAFESEH 映像 LNK2026 模块对于 SAFESEH 映像是不安全的 VS2015 /win10...
查看>>