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;
    }
    
  • 相关阅读:
    Expectation Maximization Algorithm
    Cramer-Rao Bounds (CRB)
    宽带DOA估计方法
    Statistical Methods for Machine Learning
    Bootstrap Method
    算法学习————猫树
    扩展KMP详解
    网络流的模型和应用
    [CQOI2011]动态逆序对
    CF1278F Cards
  • 原文地址:https://www.cnblogs.com/Duikerdd/p/9940828.html
Copyright © 2011-2022 走看看