首页 > 其他分享 >【C语言习题】32.字符串旋转结果

【C语言习题】32.字符串旋转结果

时间:2024-07-05 19:28:49浏览次数:22  
标签:tmp ABCDE 32 AABCD 旋转 char 字符串 习题 C语言

文章目录


作业标题

字符串旋转结果

作业内容

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

例如:给定s1 =AABCD和s2 = BCDAA,返回1

给定s1=abcd和s2=ACBD,返回0.

AABCD左旋一个字符得到ABCDA

AABCD左旋两个字符得到BCDAA

AABCD右旋一个字符得到DAABC


2.解题思路

ABCDE无论怎么旋,旋转后的所有结果,都包含在了ABCDEABCDE这个字符串里了。

所以做法很简单,只需要将原字符串再来一遍接在后面,然后找一找待查找的字符串是不是两倍原字符串的子集即可。


3.具体代码

/*
本题当然可以将所有旋转后的结果放到一个数组里,然后进行查找,但是这种做法既不好操作,也太费事,但是这题有一个很简单的做法:
其实ABCDE无论怎么旋,旋转后的所有结果,都包含在了ABCDEABCD这个字符串里了。
所以做法很简单,只需要将原字符串再来一遍接在后面,然后找一找待查找的字符串是不是两倍原字符串的子集即可。
*/
int findRound(const char* src, char* find)
{
	char tmp[256] = { 0 }; //用一个辅助空间将原字符串做成两倍原字符串
	strcpy(tmp, src); //先拷贝一遍
	strcat(tmp, src); //再连接一遍
	return strstr(tmp, find) != NULL; //看看找不找得到
}

int main() {
	char arr[] = "ABCDE";
	char arr1[6] = { 0 };
	printf("请输入需要判断的字符串:");
	scanf("%s", arr1);

	int a = findRound(arr, arr1);

	if (a == 1) {
		printf("该字符串是另一个字符串旋转后的结果。");
	}
	else {
		printf("该字符串不是另一个字符串旋转后的结果。");
	}

	return 0;
}

打印:

在这里插入图片描述

在这里插入图片描述

标签:tmp,ABCDE,32,AABCD,旋转,char,字符串,习题,C语言
From: https://blog.csdn.net/hlyd520/article/details/140165256

相关文章

  • 【LinuxC语言】手撕Http协议之accept_request函数实现(一)
    文章目录前言accept_request函数作用accept_request实现解析方法根据不同方法进行不同操作http服务器响应格式unimplemented函数实现总结前言在计算机网络中,HTTP协议是一种常见的应用层协议,它定义了客户端和服务器之间如何进行数据交换。在这篇文......
  • 征途发布网www.sf1223.cn,海量优质私服发布平台326
    征途新开私服发布网(sf1223.cn)作为一种非官方版本的征途游戏,极大地丰富了游戏体验,并吸引了大批忠实的玩家。然而,众多新服平台的存在也给玩家们带来了选择困难。在海量优质好服发布平台首先,征途的发布平台扮演着至关重要的角色。一个好的平台能够为玩家们提供稳定、安全、......
  • 从零开始学习嵌入式----C语言“\“字符
    C语言\01932\01\12\09的意思是什么?应该这样看:    所有的ASCII码都可以用"\"加数字(一般是八进制)来表示。而C语言中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符。     1)"\"后面如果跟了三位八进制数字就将\ddd作为......
  • 《计算机组成与系统结构(第二版) 裘雪红 李伯成 西安电子科技大学出版社》课后习题答案(
    声明:此系列答案配套《计算机组成与系统结构(第二版)裘雪红李伯成西安电子科技大学出版社》一书相关内容。所有内容为博主个人编辑,仅作参考学习交流之用,转载请注明出处。如发现错误,请联系博主及时勘误。如有侵权行为,博主将立即下架全部内容。240705补充声明:原文发布平台CSD......
  • 字符串习题-金额转换
    金额转换importjava.util.Scanner;publicclass统计金额{/*把数字转换成繁体字,一共7位数,数字前面补零。查表法思想!!!例如:2135↓转繁体字贰壹叁伍↓前面补0零零零贰壹叁伍↓插入单位零佰零拾零万贰壹......
  • 《计算机组成与系统结构(第二版) 裘雪红 李伯成 西安电子科技大学出版社》课后习题答案(
    声明:此系列答案配套《计算机组成与系统结构(第二版)裘雪红李伯成西安电子科技大学出版社》一书相关内容。所有内容为博主个人编辑,仅作参考学习交流之用,转载请注明出处。如发现错误,请联系博主及时勘误。如有侵权行为,博主将立即下架全部内容。240705补充声明:原文发布平台CSD......
  • 利用 STM32 实现多协议物联网网关:Modbus/Zigbee 到以太网/Wi-Fi 的数据桥接
    摘要: 随着物联网技术的飞速发展,不同通信协议之间的互联互通成为了构建智能化系统的一大挑战。本文将以实战项目为例,详细介绍如何利用STM32微控制器实现Modbus/Zigbee与以太网/Wi-Fi之间的协议转换,从而打通传感器数据上传至服务器的“最后一公里”。关键词: STM32,协议......
  • msp430定时器诠释,与32定时器大为不同
    msp4305529的定时器:从手册可以查看定时器的结构,其中控制功能的寄存器手册中很详细了,我这了只介绍我觉得他与32不同的地方和特别坑人的点1.它不具备操作寄存器,这就导致她不能像32那样通过控制重载寄存器来改变目标值,那他是怎么做的呢?它把比较捕获通道ccr0的寄存器值当作目标......
  • STM32F1+HAL库+FreeTOTS学习5——内核中断管理及中断控制函数
    STM32F1+HAL库+FreeTOTS学习5——中断管理和临界段代码保护中断简介中断优先级寄存器拓展FreeRTOS中PendSV和Systick中断优先级配置三个中断屏蔽寄存器FreeRTOS中断管理函数代码验证上一期我们学习了FreeRTOS中任务挂起与恢复,在中断服务程序中恢复任务过程中,尤其强调......
  • C语言的简单学习
    C语言是编译型语言,先编译再运行,通常用gcc进行编译,于是安装了Ubuntu操作系统。至于编辑器,VSCode也能用,先sudoaptinstallbuild-essentialgdb,再在VSCode安装C/C++extension,就可以进行开发了。C语言程序都是 .c文件结尾,新建一个hello_world.c 文件#include<stdi......