首页 > 其他 > 详细

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

时间:2015-11-02 21:22:08      阅读:289      评论:0      收藏:0      [点我收藏+]

----------------------------------------------------------------------------------------------------

    例如,源字符串src为:abcde   目标字符串dst为:bcdea  要想判断dst是否是经过src旋转得到,可以用左旋或者右旋来判断,此时,将src左旋一个字符即可得到dst字符串。这个问题我们其实可以转化为判断一个字符串是否为另一个字符串的子字符串,第一步,将src原字符串复制粘贴到src的后边,此时的src为:abcdeabcde,字符串bcdea明显为src的子字符串。这样,问题就好解决了。

----------------------------------------------------------------------------------------------------


C语言代码:

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

# define MAX 50

int Compare(char *pstr, char *parr)
{
	assert(pstr);
	assert(parr);

	int count;
	int length = strlen(parr);

	//按顺序依次比较
	while (*parr)
	{
		count = 0;

		while(*pstr != *parr && *pstr  != ‘\0‘)
		{
			pstr++;
		}

		while (*pstr == *parr)
		{
			count++;

			if (count == length)
			{
				return 1;
			}
			pstr++;
			parr++;
		}
		parr++;
	}


	//逆序依次比较
	parr = (parr + length - 1);

	while (length)
	{
		count = 0;

		while (*pstr != *parr && *pstr != ‘\0‘)
		{
			pstr++;
		}

		while (*pstr == *parr)
		{
			count++;

			if (count == length)
			{
				return 1;
			}
			pstr++;
			parr--;
		}
		length--;
	}

	return 0;
}

int main()
{	char str[MAX] = "abcdef";
	char arr[MAX] = "";
	int ret = 0;

	//str:abcdefabcdef     fedcba
	strcat(str, "abcdef");

	printf("请输入要比较的字符串:");
	scanf("%s",arr);

	ret = Compare(str,arr);

	if (1 == ret)
	{
		printf("该字符串可以由源字符串旋转得到\n");
	}
	else
	{
		printf("该字符串无法由源字符串旋转得到\n");
	}

	system("pause");
	return 0;
}


------------------------------------------------------------------------------------------

干货小知识:字符串函数strlen()计算字符串的有效长度,不包含‘\0’。

------------------------------------------------------------------------------------------

本文出自 “无名小卒” 博客,请务必保留此出处http://814193594.blog.51cto.com/10729329/1708934

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

原文:http://814193594.blog.51cto.com/10729329/1708934

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!