C 判断一个字符串是否由另一个字符串旋转得到

5人阅读 评论(0) 收藏 举报
分类:

1.题目

判断一个字符串是否为另外一个字符串旋转之后的字符串。
例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.

2.程序代码

方法一:

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <Windows.h>
#include <string.h>

int judge_char(const char arr1[7], char arr2[7], int sz)//定义函数,达到题目要求
{
    int i = 0;
    int j = 0;//定义参数,控制循环次数
    char mid = 0;//定义参数,作为中间量

    if (strcmp(arr1, arr2) == 0)//strcmp是比较两字符串内容的函数 
           //相等返回0,左边大返回正数,右边大返回负数
    {
        return 1;
    }

    while (j < sz)//循环次数不能超过字符串长度
    {
        i = 0;//每次循环都要给i初始化

        mid = arr2[0];
        while (i < sz - 1)
        {
            arr2[i] = arr2[i + 1];
            i++;
        }
        arr2[sz - 1] = mid;//把元素整体向左移动,第一个元素放到最后

        if (strcmp(arr1, arr2) == 0)
        {
            return 1;
        }

        j++;
    }

    return 0;
}

int main()
{
    char s1[] = "ABCDEF";//定义字符串
    char s2[7] = { 0 };
    int sz = sizeof(s1) / sizeof(s1[0]) - 1;//计算字符串的长度,
      //字符串中隐藏着一个“\0”,所以计算出来的数要减去1才是字符串中元素的个数

    printf("please input a string(include 6 character):");
    scanf("%s", &s2);

    printf("%d\n", judge_char(s1, s2, sz));

    system("pause");
    return 0;
}

方法二:

//该方法所用的思想为把一个字符串拷贝之后拼接到后面形成如下形式:
//ABCDEFABCDEF 若另一个字符串为原字符串旋转后得到的 那么这个字符串一定是这个
//拼接后的字符串的子串

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <Windows.h>
#include <string.h>
#include <stdlib.h>

#define N 7

int judge_char(char *s1, char *s2)//
{
    char *p = malloc(strlen(s1) + strlen(s1) + 1);//开辟动态内存空间,两个
    //字符串的长度加上一个'\0'的长度

    strcpy(p, s1);//把字符串s1的内容拷贝到p

    strcat(p, s1);//把字符串p与s1拼接到一起
    //printf("p = %s\n", p);

    if (strstr(p, s2) == NULL)//strstr函数是判断后者是否为前者的子串,
                   //若不是返回NULL
    {
        return 0;
    }
        return 1;
}

int main()
{
    char s1[N] = "ABCDEF";
    char s2[N] = { 0 };//定义两个字符串

    printf("please input a character string(include 6 character):");
    scanf("%s", &s2);

    printf("%d", judge_char(s1, s2));

    system("pause");
}

3.执行结果

这里写图片描述

查看评论

彻底掌握 Javascript(七)字符串【专家辅导】

-
  • 1970年01月01日 08:00

判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.

#include #include #include int judge(char str1[],char str2[]) { int i = 0; int j = 0; ...
  • qq_39947431
  • qq_39947431
  • 2017-11-05 12:48:17
  • 275

判断一个字符串是否为另外一个字符串旋转之后的字符串

判断一个字符串是否为另外一个字符串旋转之后的字符串。例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.AABCD左旋一个字符得到ABCDAAAB...
  • Scenlyf
  • Scenlyf
  • 2016-06-11 18:51:00
  • 259

【c语言】判断一个字符串是否为另外一个字符串旋转之后的字符串

// .判断一个字符串是否为另外一个字符串旋转之后的字符串。 // 例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0 #include ...
  • zhaoyaqian552
  • zhaoyaqian552
  • 2015-07-04 10:03:30
  • 1036

判断某个字符串是否为另一个字符串旋转之后得到的

判断某个字符串是否是另一个字符串旋转之后得到的 思路一:将其中一个字符串进行左旋(或右旋),每旋转一次进行比较。 取任意一个字符串(str1)进行左旋(或右旋)操作,每左旋(或右旋)一位...
  • yinhaijing_ss
  • yinhaijing_ss
  • 2018-01-23 23:35:23
  • 39

判断一个字符串是否由另一个字符串旋转而成

if s1 = "stackoverflow" then the following are some of its rotated versions: "tackoverflows""acko...
  • is2120
  • is2120
  • 2011-04-24 23:48:00
  • 646

判断一个字符串是否为另一个字符串的旋转后的子字符串

题目: 假定我们现在又一个函数isSubString(const string& str1, const string& str2)能够判断出字符串str2是否为str1的子串,那请给出一个方法能够...
  • acaiwlj
  • acaiwlj
  • 2013-09-08 11:23:54
  • 1123

判断一个字符串是否为另一个旋转之后的字符串

判断一个字符串是否为另一个旋转之后的字符串
  • zhu_931
  • zhu_931
  • 2016-12-08 21:14:33
  • 148

C语言:判断一个字符串是否为另外一个字符串旋转之后的字符串。(左旋右旋、求子串)

法1:    判断是否是其左旋再判断是否是右旋。#include #include #include void Reverse(char* left, char* right) {     while...
  • hanjing_1995
  • hanjing_1995
  • 2016-05-30 17:14:38
  • 320

字符串面试题(四)— 判断一个字符串是否为另外一个字符串旋转之后的字符串

判断一个字符串是否为另外一个字符串旋转之后的字符串。
  • sinat_35512245
  • sinat_35512245
  • 2017-01-30 19:30:18
  • 501
    个人资料
    持之以恒
    等级:
    访问量: 816
    积分: 606
    排名: 8万+
    文章分类
    文章存档
    最新评论