C语言:判断一个字符串是不是另一个字符串的旋转字符串

例如:给定s1 = AABCD和s2 = BCDAA,返回1,

给定s1=abcd和s2=ACBD,返回0.

AABCD左旋一个字符得到ABCDA

AABCD左旋两个字符得到BCDAA

AABCD右旋一个字符得到DAABC

AABCD右旋两个字符得到CDAAB

分析题目之后我们发现,一个字符串有左旋转和右旋转两种。左旋转之后的字符串在原字符串拼接后的新字符串中;右旋转之后的字符串拼接之后可以找到源字符串。

这里我们会使用两个库函数strncat和strstr,关于两个函数的定义请自己查找。

字符串查找部分:

void circle(char *dest, const char *src){      
	assert(dest);
	assert(src);
	strncat(dest,dest, strlen(dest));   //被查找的字符串拼接
	if (NULL == strstr(dest, src)){      //查找字符串,找到返回第一次出现的地址
		return 0;                    //否则返回NULL
	}
	else
		return 1;
}

完整代码:

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

#include<assert.h>

#include<string.h>

void circle(char *dest, const char *src){

assert(dest);

assert(src);

strncat(dest,dest, strlen(dest));

if (NULL == strstr(dest, src)){

printf("不是旋转字符串\n");

}

else

printf("是旋转字符串\n");

}

int main(){

char arr[13] = "abdgef";          //测试左旋转

char brr[] = "dgefab";

char crr[13] = "efabdg";           //测试右旋转

char drr[] = "abdgef";

char err[] = "addgef";            //测试找不到

circle(arr,brr);

circle(crr, drr);

circle(arr, err);

return 0;

}

时间: 2024-12-09 04:31:06

C语言:判断一个字符串是不是另一个字符串的旋转字符串的相关文章

R语言判断向量中是否存在一个元素

判断ori_data[,1]中是否存在元素a: a %in% ori_data[,1] 如果存在返回 true,否则返回 false

【C语言】判断一个字符串是否是一个字符串的旋转字符串

//判断一个字符串是否是一个字符串的旋转字符串 //利用库函数实现 #include <stdio.h> #include <string.h> #include <assert.h> int IsRotate(char *str1, const char *str2) { assert(str1); assert(str2); strncat(str1, str1,strlen(str1)); if (NULL == strstr(str1, str2)) retur

Js判断一个字符串是否包含一个子串

Js中经常遇到判断一个字符串是否包含一个子串,java语言中有containes的方法,直接调用就可以了.除非引用第三方数据库,Js中没有contains方法. 为了实现更java语言中containes方法相同的效果,最简单的一种做法是利用js中字符串查找位置的方法indexOf(“o”大写).此方法的返回的值得可能有 -1,0,n(正整数)三种情况.0是当子串在字符串第1位开始包含的情况下返回,例子如下: <script> var str="he"; var strin

Struts标签&lt;s:if&gt;判断字符串是否包含一个固定的值

Struts标签<s:if>判断字符串是否包含一个固定的值:1.如果比较对象是字符串: 1 <s:if test="str.contains('判断是否包含的字符串')" > 2 包含 3 </s:if> 4 <s:else> 5 不包含 6 </s:else> 2.如果比较对象是某个对象的属性: 1 <s:if test="(notice.title).contains('通知')"> 2 &

利用Apache的beanutils判断字符串是否为一个合法日期

依赖的jar包 commons-beanutils-1.8.0.jar commons-logging-1.0.4.jar 方法如下 package test.date; import java.util.Date; import java.util.Locale; import org.apache.commons.beanutils.locale.converters.DateLocaleConverter; /**  * 利用Apache的beanutils判断字符串是否为一个合法日期  

判断一个字符串是否为另外一个字符串左旋或右旋之后的字符串

题目: 判断一个字符串是否为另外一个字符串旋转之后的字符串.例如:给定s1 = abcdef和s2 = cdefab,返回1,给定s1=abcd和s2=ACBD,返回0. abcdef左旋一个字符得到bcdefa abcdef左旋两个字符得到cdefab abcdef右旋一个字符得到fabcde abcdef右旋两个字符得到efabcd 题目分析: 根据这个题目,我们能够和字符串的左旋和右旋联系起来,如果把给定的字符串拷贝一份放在给定字符串之后,例如:给定字符串abcdef,经过拷贝后得到字符串

java语言判断一个数字是否为回文数字

判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 . 从右向左读, 为 121- .因此它不是一个回文数. 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 .因此它不是一个回文数. 进阶: 你能不将整数转为字符串来解决这个问题吗? 解法一:使用字符串反转,比较反转前后的字符串是否相等 class

在php中判断一个字符串包含另一个字符串

方法一:用php的strpos() 函数判断字符串中是否包含某字符串的方法 if(strpos('Longway','way') !== false){ echo '包含way'; }else{ echo '不包含way'; } 方法二:使用了explode 用explode进行判断PHP判断字符串的包含代码如下: <?php $url = "001a.gif"; $str = "a"; $con = explode($str,$url); if (count

【C语言】模拟实现strchr函数.即在一个字符串中查找一个字符第一次出现的位置并返回

//模拟实现strchr函数.即在一个字符串中查找一个字符第一次出现的位置并返回 #include <stdio.h> //#include <string.h> #include <assert.h> char* my_strchr(char *dst, char src) { assert(dst); while (*dst != '\0') { if (*dst == src) return dst; dst++; } return 0; } int main()