C语言程序-判断一个字符串是否为另外一个字符串旋转之后的字符串

整体思路:根据之前的文章C语言实现字符串左旋,那么这就很简单了,只需要判断s2字符串是不是双倍s1字符串的字串就可以了,在之前的基础上加上一个strstr()函数就可以进行判断了。但前提必须是s2字符串的长度和s1字符串的长度一样,才有比较的必要,因此在之前进行一次字符长度的比较,如果一样长,再进行判断。


  • 代码如下 (环境:Visual Studio 2017)
//例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1 = abcd和s2 = ACBD,返回0.
//AABCD左旋一个字符得到ABCDA
//AABCD左旋两个字符得到BCDAA
//AABCD右旋一个字符得到DAABC

#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <assert.h>

#pragma warning(disable:4996);
int LeftRotate(char str[], char D[], char value[])
{
    assert(str);
    assert(D);
    char *d = D;
    char *s = str;
    if (strlen(str) != strlen(value))
    {
        return 0;
    }
    while (*d)
    {
        d++;
    }
    while (*s)
    {
        *d++ = *s++;
    }
    return strstr(D, value);
}
int main()
{
    char str[] = "abcd123";
    char data[64];
    char value[] = "123abcd";
    strcpy(data,str);
    if(LeftRotate(str, data,  value))
    {
        printf("%s 是 %s 旋转之后的字符串!\n",value, str);
    }
    else
    {
        printf("%s 不是 %s 旋转之后的字符串!\n", value, str);
    }
    system("pause");
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值