zoukankan      html  css  js  c++  java
  • C语言判断字符串是否旋转过

    //方法一
    //每次左旋一次,判断旋转之后字符串是否与目标字符串是否一致 
    //旋转一圈  没有找到返回0
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    void left_rotate(char *str, int k)
    {
        int len = strlen(str);
        k %= len;//减少重复次数
    
        char temp = 0;
        char *cur = str;
        while (k--)
        {
    
            //左旋一次
            temp = *str;
            cur = str;
            while (*(cur + 1) != '')
            {
                //每个字符向前推一个
                *cur = *(cur + 1);
                cur++;
            }
    
            *cur = temp;
        }
    }
    
    int is_rotate(char *dest, char* src)
    {
        if (strlen(dest) != strlen(src))
        {
            printf("不是旋转过的!
    ");
            return 0;
        }
        if (!strcmp(dest, src))
        {
            printf("旋转过的!
    ");
            return 1;
        }
    
        int k = strlen(dest);
        k--;
        while (k--)
        {
            //每次旋转一次 判断
            left_rotate(src, 1);
            //判断旋转之后的内容是否和目标一致
            if (!strcmp(dest, src))
            {
                printf("旋转过的!
    ");
                return 1;
            }
        }
        printf("不是旋转过的!
    ");
        return 0;
    
    }
    
    //方法二 dest--->abcd 把目标串拼接相同的内容abcdabcd   判断源串是否为目标串的子串 
    //                                  src---->cdab
    int is_rotate02(char *dest, char* src)
    {
        if (strlen(dest) != strlen(src))
        {
            printf("不是旋转过后的!
    ");
            return 0;
        }
        strncat(dest, dest,strlen(dest));
        if (strstr(dest, src) != NULL)
        {
            printf("是旋转过后的!
    ");
            return 1;
        }
        printf("不是旋转过后的!
    ");
        return 0;
    
    }
    
    int main()
    {
        char dest[100] = "sssss";
        char src[100] = "avdasf";
        is_rotate02(dest, src);
        
        system("pause");
        return 0;
    }
    
  • 相关阅读:
    iostream与iostream.h的区别
    [HAOI2011]向量
    [POI2011]Temperature
    [洛谷2839/国家集训队]middle
    [TJOI2013]松鼠聚会
    [HNOI2015]接水果
    [BZOJ3772]精神污染
    [BZOJ3251]树上三角形
    [ZJOI2011]道馆之战
    [SDOI2013]森林
  • 原文地址:https://www.cnblogs.com/Duikerdd/p/9940828.html
Copyright © 2011-2022 走看看