每天一道算法题(29)——检测字符串的是否由移位得到
2015-08-05 14:04
411 查看
题目:
字符串ABCD,可以由字符串BCDA或者CDAB通过循环移位而得到。请编程实现以下检测:字符串S1是否可以由字符串S2通 过循环移位而得到。思路:
1.不涉及字符串拷贝,只通过指针移位匹配字符串。2.遍历s1的所有移位形式,只要有一种形式匹配s2则退出。
代码:
#include"iostream" using namespace std; bool cmp(const char* p1,const char *p2,int len){//依据特定长度,匹配两段字符串 if((!p1&&!p2)||(len==0))//注意长度为“0的时候匹配成功” return true; if(!p1||!p2||len<0) return false; int i=0; while(i<len&&*(p1+i)==*(p2+i)) i++; if(i==len) return true; else return false; } bool decision(const char* p1,const char* p2){//判决函数 if(!p1&&!p2) return true; if(!p1||!p2) return false; if(strlen(p1)!=strlen(p2)) return false; int k=strlen(p1); for(int i=0;i<k;i++){ if(cmp(p1+i,p2,k-i)&&cmp(p1,p2+k-i,i)) return true; } return false; } int _tmain(int argc, _TCHAR* argv[]) { char p1[]="ABCD"; char p2[]="BCDA"; if(decision(p1,p2)) cout<<"true"<<endl; else cout<<"False"<<endl; }
相关文章推荐
- 【Sublime插件】-----Emmet使用手册
- 推荐几个机器学习算法及应用领域相关的中国大牛:
- IOS开发获取手机内照片属性
- Waited long enough for: ServiceRecord 问题解决
- 儿童的客体永久性
- 【asp】cookies
- BW系列之DSO
- AppDomain
- IOS第七天(4:UiTableView 数据的显示优化重复实例和tableFooterView和tableHeaderView)
- 南邮 OJ 1253 程序存储问题
- HDU 2544 最短路(四种写法:Floyd、Dijkstra、Bellman-Ford、SPFA)
- OpenGL超级宝典visual studio 2013开发环境配置,GLTools
- 微博粉丝迅速增粉之--互粉大厅
- Android Api Demos登顶之路(二十)Screen Orientation
- 快速理解 Omid: Yahoo在HBase上的分布式事务方案
- TinyFrame框架中的UOW使用方式纠正
- CSS的盒子模型与布局
- 南邮 OJ 1250 最优合并问题
- perl-redis
- 网页 布局响应式设计