每天小练笔1-周期串问题
2015-07-03 20:12
423 查看
这个系列的题目都是来源于网络,然后自己写代码,可能不是最佳方法,网上有好的算法我也会给出链接。
题目一[周期串问题]
如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期。例如,abcabcabcabc以3为周期(注意,它也可以6和12为周期,结果取最小周期3)。字符串的长度小于等于100,由调用者保证。
接口说明
原型:
int GetMinPeriod(char *inputstring);
输入参数:
char * inputstring:字符串
返回值:
int 字符串最小周期
可以想到三个循环
代码
题目一[周期串问题]
如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期。例如,abcabcabcabc以3为周期(注意,它也可以6和12为周期,结果取最小周期3)。字符串的长度小于等于100,由调用者保证。
接口说明
原型:
int GetMinPeriod(char *inputstring);
输入参数:
char * inputstring:字符串
返回值:
int 字符串最小周期
可以想到三个循环
代码
#include <iostream> using namespace std; int GetMinPeriod(char *inputstring); int main() { char * str="abceabcdabceabcd"; cout<<GetMinPeriod(str); } int GetMinPeriod(char *inputstring) { int i,j,k; int size = strlen(inputstring); int halfsize = size/2; char * a = inputstring; bool okflag = true; for(i=1;i<=halfsize;++i) //i is the second string head char { okflag = true; for(j=0;j<i;++j) { for(k=i+j;k<size;k+=i) { if(a[j] != a[k]) { okflag = false; break; } } if(okflag == false) break; } if(okflag) break; } return i; }
相关文章推荐
- NYOJ 852 蛇形填数(二)
- 第一关
- 高斯函数的傅里叶变换
- [随笔]招投标注意事项
- 1036: [ZJOI2008]树的统计Count
- 【前端网站】 前端(html、css、js)精品网站收藏
- GCC编译器和GDB调试器常用选项
- Android5.1--APK包的安装、卸载和优化(PackageManagerService)(三)
- MFC 遮罩(透明)
- java基础知识随笔--数组对象
- javascript流程控制
- JNI技术实现(HelloWord)
- Java包导入eclipse注释乱码
- NYOJ 893 十字架
- 黑马程序员--Foundation框架基础
- 天猫11.11:多终端下的一致性体验
- 【Dubbo之基本配置和运行(2)】Dubbo zookeeper基本配置和运行
- 关于521的变态问题
- NYOJ 49 开心的小明
- Android的onCreateOptionsMenu()创建菜单Menu详解