判断一个字符串是否为另一个旋转之后的字符串
2016-12-08 21:14
381 查看
判断一个字符串是否为另一个旋转之后的字符串?
例如:str1=abcd; str2=cdab; str3=ABCD; 则:str1与str2 是 返回 1;str2与str3 不是 返回 0。
分析: 一个字符串无论左旋还是右旋,只是改变字符在串的排序,在此以左旋讨论,在本题中以递归讨论。
代码如下:
例如:str1=abcd; str2=cdab; str3=ABCD; 则:str1与str2 是 返回 1;str2与str3 不是 返回 0。
分析: 一个字符串无论左旋还是右旋,只是改变字符在串的排序,在此以左旋讨论,在本题中以递归讨论。
代码如下:
#include <stdio.h> #include <string.h> char *turn_one(char *str) //每次调用将字符串最左边的值放到最右边 { char *get=str; char *get_get=get; char tmp=*str; str++; while(*str!='\0') *(get++)=*(str++); *get=tmp; return get_get; } char *turn_left(char *str,int num) //控制左旋的字符个数 { int i=0; for(i=0;i<num-1;i++) turn_one(str); return turn_one(str); } int jude_same(char *str1,char *str2,int len1) //判断是否为旋转之后字符串 { int i=0; for(i=0;i<len1;i++){ //将其中一个字符串每次左旋一个字符,然后与另一个字符串比较 if(strcmp(turn_left(str1,i),str2)==0) return 1; } return 0; } int main() { char str1[]="hello"; //str1与str2为测试数组 int len1=strlen(str1); char str2[]="llohe"; int len2=strlen(str2); if(len1==len2) //当俩个字符串大小相等进入比较 { if(jude_same(str1,str2,len1)) printf("是\n"); else printf("不是"); } else printf("不是\n"); return 0; }
相关文章推荐
- 判断一个字符串是否为另一个字符串旋转之后的字符串
- 判断一个字符串是否由另一个字符串旋转而成
- 经典面试题:求数组的最大子序列和;实现函数 :判断一个自负喜欢是否是另一个字符串旋转所得;杨氏矩阵中查找一个数。
- C语言--判断一个字符串是否为另一个字符串的旋转
- C语言 判断一个字符串是否为另外一个字符串旋转之后的字符串
- 利用已知函数,判断一个字符串是否是另一个字符串的旋转字符串(面试题3)
- 【C语言】【笔试题】【面试题】判断一个字符串是否为另外一个字符串旋转之后的字符串
- 判断一个字符串是否为另外一个字符串旋转之后的字符串
- 判断一个字符串是否为另外一个字符串旋转之后的字符串
- 1.实现一个函数,可以左旋字符串中的k个字符。 AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA 2.判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1
- 判断一个字符串是否为另外一个字符串旋转之后的字符串。
- 判断一个字符串是否为另外一个字符串旋转之后的字符串
- 判断一个字符串是否为另外一个字符串旋转之后的字符串。
- 判断一个字符串是否为另一个字符串的旋转后的子字符串
- 判断一个字符串是否是另一个字符串旋转后的结果,假设有个函数Substring判断一个字符是否为另一个字符的子字符串并且这个函数只能用一次
- 【C语言】【笔试题】【面试题】判断一个字符串是否为另外一个字符串旋转之后的字符串
- 【c语言】判断一个字符串是否为另外一个字符串旋转之后的字符串
- 判断一个字符串是否为另外一个字符串旋转之后的字符串
- 判断一个字符串是否为另外一个字符串旋转之后的字符串
- 字符串面试题(四)— 判断一个字符串是否为另外一个字符串旋转之后的字符串