c语言代码练习36

问:判断数组是否是另一个数组的逆转数组(两种方法

 

)

复制代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>
#include<assert.h>


void Mylift(char* left, char* right)
{
    assert(left != NULL);
    assert(right != NULL);
    char rmp = 0;
    while (left < right)
    {
        rmp = *left;
        *left = *right;
        *right = rmp;
        right--;
        left++;
    }
}

void Ayue(char* arr, int k)
{
    assert(arr);
    int sz = strlen(arr); 
    assert(k < sz);
    Mylift(arr, arr + k - 1);//逆序左边
    Mylift(arr + k, arr + sz - 1);//逆序右边
    Mylift(arr, arr + sz - 1);//逆序整体
}
int is_Ayue(char* s1, char* s2)
{
    int len = strlen(s1);
    int i = 0;
    for (i = 0; i < len; i++)
    {
        Ayue(s1, 1);//每次逆转一个,因为这里的s1是变化的
        int ret = strcmp(s1, s2);
        if (ret == 0)
            return 1;
    }
    return 0;
}

int main()
{
    char arr1[] = "abcdef";
    char arr2[] = "cdefab";
    int t = is_Ayue(arr1, arr2);
    if (t == 1)
        printf("Yes\n");
    else
        printf("No\n");
    return 0;
}
复制代码

 

复制代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>

int Ayue(char* arr1,char* arr2)
{
    int len = strlen(arr1);
    int len1 = strlen(arr2);
    if (len != len1)
    {
        return 0;
    }
    strncat(arr1, arr1,len);
    char* ret = strstr(arr1, arr2);
    if (ret == NULL)
        return 0;
    else
        return 1;
}

int main()
{
    char arr1[20] = "abcdef";
    char arr2[] = "cdefab";
    int ret = Ayue(arr1, arr2);
    if (ret == 1)
        printf("YES");
    else
        printf("NO");
    return 0;
}
复制代码

 

 

posted @   小菜阿跃  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示