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

原创 2016年06月02日 10:45:05

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

例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.

AABCD左旋一个字符得到ABCDA

AABCD左旋两个字符得到BCDAA

AABCD右旋一个字符得到DAABC

AABCD右旋两个字符得到CDAAB

方法(1):用库函数实现,代码如下:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
	char arr[20] = "abcdef";
	char *p = "defa";
	int len = strlen(arr);
	strncat(arr, arr, len);//字符串追加函数
	char *ch = strstr(arr, p);//查找字符串函数,找到了就输出,找不到就为空
	if (ch != NULL)
	{
		printf("%p\n", ch);//输出找到的字符串的地址
		printf("%s\n", ch);
	}
	else
	{
		printf("not exist\n");
	}
	system("pause");
	return 0;
}

方法(2):通过模拟strncat和strstr来实现,代码如下:

#include<stdio.h>
#include<string.h>
#include<assert.h>
#include<stdlib.h>
typedef unsigned int uint;
char *my_strncat(char *dest, const char *src, uint count)//模拟实现strncat函数
{
	assert(dest);
	assert(src);
	int *ret = dest;
	while (*dest)
	{
		dest++; //找到dest中的\0
	}
	while (count--)
	{
		*dest++ = *src++;
	}
	*dest = '\0';
	return ret;
}

char *my_strstr(const char *str1, const char *str2)//模拟实现strstr函数
{
	char *p1 = NULL;
	char *p2 = NULL;
	char *ptr = str1;
	while (*ptr)
	{
		p1 = ptr;
		p2 = str2;
		while (*p1 == *p2)
		{
			p1++;
			p2++;
			if (*p2 == '\0')
			{
				return ptr;//此时ptr的首地址就是要查找的子字符串在的位置
			}
		}
		ptr++;//上面没找到,使ptr指向下一个位置继续寻找
	}
	return NULL;
}

int main()
{
	char arr[20] = "abcdef";
	char *p = "defa";
	int len = strlen(arr);
	my_strncat(arr, arr, len);//字符串追加函数
	char *ch = my_strstr(arr, p);//查找字符串函数
	if (ch != NULL)
	{
		printf("%p\n", ch);//找到并输出找到的字符串的地址
		printf("%s\n", ch);//输出字符串
	}
	else
	{
		printf("not exist\n");//没找到
	}
	system("pause");
	return 0;
}

本文出自 “Stand out or Get out” 博客,请务必保留此出处http://jiazhenzhen.blog.51cto.com/10781724/1716811

oracle判断一个字符串中是否包含另外一个字符串(想要不论顺序或者不相邻的字符)

tlk_CDCTable_E表                                                        tlk_DXAL_dic表               ...
  • qq_26676207
  • qq_26676207
  • 2016年04月14日 09:35
  • 1323

PHP 判断一段字符串是否包含另一段字符串

PHP语言是一个功能强大的嵌入式HTML脚本语言,它的易用性让许多程序员选择使用。PHP判断字符串的包含,可以使用PHP的内置函数 strstr,strpos,stristr直接进行判断.也可以通过e...
  • u012971242
  • u012971242
  • 2013年12月09日 09:54
  • 1768

判断一个字符串能否通过添加一个字符变成回文串

蘑菇街笔试题目: 判断一个字符串能否通过添加一个字符变成回文串 相关概念: “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。 回文可分为两种:偶数...
  • Victor526
  • Victor526
  • 2015年09月21日 16:57
  • 2466

判断一个字符串是否是中心对称 C++描述

  • 2014年05月03日 22:35
  • 2KB
  • 下载

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

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

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

判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0....
  • Foreordination_
  • Foreordination_
  • 2016年12月11日 12:02
  • 331

1.实现一个函数,可以左旋字符串中的k个字符。 AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA 2.判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1

1.实现一个函数,可以左旋字符串中的k个字符。 AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA 将一个字符串左旋k个,首先想到将一个字符串左旋一个,然后把得到的这个新字符...
  • qq_35118894
  • qq_35118894
  • 2016年07月25日 14:28
  • 487

一个在随机字符串和多用户登陆方面完善之后的购物系统程序

import java.util.Random; public class Pra{ public static void main(String [] args){ String [] use...
  • u014306229
  • u014306229
  • 2014年04月10日 14:02
  • 1439

判断一个字符串能否在顺序重组后成为回文串

  • 2014年05月12日 18:36
  • 673B
  • 下载

oracle 如何判断一个字符串能否转换为数字?

  • 2011年04月06日 16:20
  • 182KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:判断一个字符串是否为另外一个字符串旋转之后的字符串。
举报原因:
原因补充:

(最多只允许输入30个字)