SRM 604 DIV2 250
2014-01-12 14:01
344 查看
题意:给你一个字符串向量,问你有中间多少个串循环相等(循环相等的意思就是 “ab”,“ba”,经过移位以后还相等的字符串)
解题思路:KMP,这种字符串有一个性质,就是 如果 a的长度等于b的长度,且 能在 a+a 中匹配到b,则可以断定这两个字符串循环相等
解题代码:
代码
解题思路:KMP,这种字符串有一个性质,就是 如果 a的长度等于b的长度,且 能在 a+a 中匹配到b,则可以断定这两个字符串循环相等
解题代码:
#include <cstdlib> #include <cctype> #include <cstring> #include <cstdio> #include <cmath> #include <algorithm> #include <vector> #include <string> #include <iostream> #include <sstream> #include <map> #include <set> #include <queue> #include <stack> #include <fstream> #include <numeric> #include <iomanip> #include <bitset> #include <list> #include <stdexcept> #include <functional> #include <utility> #include <ctime> using namespace std; #define PB push_back #define MP make_pair #define REP(i,n) for(i=0;i<(n);++i) #define FOR(i,l,h) for(i=(l);i<=(h);++i) #define FORD(i,h,l) for(i=(h);i>=(l);--i) typedef vector<int> VI; typedef vector<string> VS; typedef vector<double> VD; typedef long long LL; typedef pair<int,int> PII; int kmp(string a, string b) { int pi[100]; int m = b.size(); memset(pi,0,sizeof(pi)); pi[0] = -1; int k = -1 ; for(int i = 1 ;i < m ; i ++) { while(k >= 0 && b[k+1] != b[i]) k = pi[k]; if(b[k+1] == b[i]) k = k +1; pi[i] = k; } int n = a.size(); int q = -1 ; for(int i = 0;i < n;i ++) { while(q >= 0 && b[q+1] != a[i]) q = pi[q]; if(b[q+1] == a[i]) q = q +1; if(q == m -1) { return 1; } } return 0 ; } class FoxAndWord { public: int howManyPairs(vector <string> words) { int k = words.size(); int sum = 0 ; for(int i = 0;i < k ;i ++) for(int j = i + 1;j < k; j ++) { string temp = words[i] + words[i]; if(kmp(temp,words[j])&& words[i].size() == words[j].size()) { sum ++ ; } } return sum ; } };
代码
相关文章推荐
- 关于服务器(自己写的tomcat小服务器程序)应答浏览器请求信息
- 构建线程类的2种做法
- java中的static
- /etc/resolv.conf 的更改在重启后丢失的解决办法
- 大学六年我读过的一些书
- 分享 - Hybrid 开发将博客园集成到自己的网站中 - 效果高大上 :)
- matlab编程与工程应用(第二版) 第七章 字符串操作 笔记
- 序列化(Serialization)据为JSONP远端请求
- windows内置账户区别
- c 与 c++中的time相关函数
- 关于浏览器向服务端(自己写的个tomcat小服务器程序,仅供测试)发送请求的具体内容
- 黑马程序员------- java高新技术(上)-------
- LA 2963 Hypertransmission
- 关于买房,还贷,装修等一系列文章的总结
- DNS HOST XXXXX NOT FOUND:5(REFUSED)错误问题解惑
- b/s和c/s架构的理解和区别
- 《Parent Effectiveness Training》--简介
- 创业公司之CTO之要不要测试部门
- Win7系统下如何搭建无线局域网
- message sent to deallocated instance