1. 程式人生 > >C語言判斷字符串是否旋轉過

C語言判斷字符串是否旋轉過

emp 是否一致 字符串 system ota strlen color 方法 左旋

//方法一
//每次左旋一次,判斷旋轉之後字符串是否與目標字符串是否一致 
//旋轉一圈  沒有找到返回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) != \0) { //每個字符向前推一個 *cur = *(cur + 1); cur++; } *cur = temp; } } int is_rotate(char *dest, char* src) { if (strlen(dest) != strlen(src)) { printf("
不是旋轉過的!\n"); return 0; } if (!strcmp(dest, src)) { printf("旋轉過的!\n"); return 1; } int k = strlen(dest); k--; while (k--) { //每次旋轉一次 判斷 left_rotate(src, 1); //判斷旋轉之後的內容是否和目標一致 if (!strcmp(dest, src)) { printf(
"旋轉過的!\n"); return 1; } } printf("不是旋轉過的!\n"); return 0; } //方法二 dest--->abcd 把目標串拼接相同的內容abcdabcd 判斷源串是否為目標串的子串 // src---->cdab int is_rotate02(char *dest, char* src) { if (strlen(dest) != strlen(src)) { printf("不是旋轉過後的!\n"); return 0; } strncat(dest, dest,strlen(dest)); if (strstr(dest, src) != NULL) { printf("是旋轉過後的!\n"); return 1; } printf("不是旋轉過後的!\n"); return 0; } int main() { char dest[100] = "sssss"; char src[100] = "avdasf"; is_rotate02(dest, src); system("pause"); return 0; }

C語言判斷字符串是否旋轉過