C语言判断字符旋转

       前言

        今天我们使用c语言来写代码来实现字符串选择的判断,我们来看题目

        题目描述

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

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

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

        AABCD左旋一个字符得到ABCDA

        AABCD左旋两个字符得到BCDAA

        输入描述

        无

        输出描述

        一行,如果是旋转之后得到的字符串输出YES,不是的话输出NO

        题目分析

        我们想要实现这个过程,首先我们需要搞明白怎么去旋转字符串,之后才可以判断一个字符串是否是另一个字符串旋转的结果。

        首先,我们经过分析发现,当我们将前半部分字符串逆序,将后半部分字符串逆序,之后将整个字符串逆序之后可以得到左旋之后的字符串。

        

        我们了解如何左旋字符串之后就进入判断环节,我们需要判断一个字符串是否是另一个字符串左旋之后的结果。那么我们将这个字符串与原始的字符串依次左旋的结果进行比较。如果相等,那么我们就认为这个字符串是原始字符串左旋之后的结果,输出YES,如果不是输出NO。

        代码展示

        

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<assert.h>
//逆序字符串
void reverse(char* left, char* right)
{assert(left);assert(right);while (left < right){char tmp = *left;*left = *right;*right = tmp;left++;right--;}
}
//左移
void left_move(char arr[], int k)
{int len = strlen(arr);k %= len;reverse(arr, arr + k - 1);reverse(arr + k, arr + len - 1);reverse(arr, arr + len - 1);
}
//判断是否是左移之后的字符串,是就返回1,不是就返回0
int infer_left_move(char arr1[],char arr2[])
{int len1 = strlen(arr1);int len2 = strlen(arr2);int i = 0;//如果两个字符串长度不相同,不用判断,直接返回0if (len1 != len2){return 0;}for (i = 0;i < len1;i++){left_move(arr1, 1);//比较两字符串是否相等,相等就返回1if (strcmp(arr1, arr2) == 0){return 1;}}//遍历循环字符串中的字符串一遍之后,没有相等就返回0return 0;
}
int main()
{char arr1[] = "AABCD";char arr2[] = "BCDAA";int ret = infer_left_move(arr1,arr2);if (ret == 1){printf("YES\n");}else{printf("NO\n");}return 0;
}

        代码详解

        我们使用函数infer_left_move来进行判断字符串是否是原始字符串左旋得到,在外面判断的过程中,如果两个字符串的长度不相等,直接判断为不是,以为一个字符串无论如何左旋,他的长度是不会改变的,之后我们使用一个for循环来使我们可以与每一次左旋后的字符串进行比较,我们使用strcmp函数来比较每次左旋之后的两个字符串是否相等,如果相等就返回1,输出yes,如果不相等就返回0,输出no.

        在判断的过程中,我们需要每次将字符串左旋1位,我们分装函数left_move来帮我们执行,知道了字符串长度之后,为了防止k超出字符串长度,我们将k%=len,这样我们就算超过也可以正常进行运算。

        我们再分装函数reserve来进行逆序字符串,我们先使用断言语句assert来确保穿参过来的指针left与right有效,之后进行置换。

        在left_move函数中,arr指向的是数组中的第一个元素,我们将他传参给reserve函数中的char*left中表示数组中的第一个字符,之后我们将arr加上想要左移的位数k再减去1传参给reserve函数中的char*right表示数组中前半部分最右侧的字符,之后开始逆序字符串。

        后半部分与全部字符串逆序也是相同的操作。

        之后我们可以得到结果yes

        结果展示

        

        愉快的一天从写代码开始,加油加油!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3017349.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

创建操作手册知识库的终极指南

在繁忙的工作中&#xff0c;有一个方便好用的操作手册知识库能帮我们节省大量时间&#xff0c;避免走弯路。那么&#xff0c;如何创建这样一个知识库呢&#xff1f;下面就给大家讲解一下简单易学的创建步骤。 一、明确目标与需求 在创建操作手册知识库之前&#xff0c;首先要明…

本地运行AI大模型简单示例

一、引言 大模型LLM英文全称是Large Language Model&#xff0c;是指包含超大规模参数&#xff08;通常在十亿个以上&#xff09;的神经网络模型。2022年11月底&#xff0c;人工智能对话聊天机器人ChatGPT一经推出&#xff0c;人们利用ChatGPT这样的大模型帮助解决很多事情&am…

YOLOv5 V7.0 - rknn模型的验证 输出精度(P)、召回率(R)、mAP50、mAP50-95

1.简介 RKNN官方没有提供YOLOv5模型的验证工具&#xff0c;而YOLOv5自带的验证工具只能验证pytorch、ONNX等常见格式的模型性能&#xff0c;无法运行rknn格式。考虑到YOLOv5模型转换为rknn会有一定的精度损失&#xff0c;但是需要具体数值才能进行评估&#xff0c;所以需要一个…

python+flask+ldap3搭建简易版IDaaS系统(前端站点)

Python工具开源专栏 Py0006 pythonflaskldap3搭建简易版IDaaS系统&#xff08;前端站点&#xff09; Python工具开源专栏前言目录结构前端网站的部分演示首页查询数据数据同步数据关联查询系统日志 完整代码已在GitHub上开源 前言 pythonflaskldap3搭建简易版IDaaS系统的前端站…

SpringBoot指标监控

一.SpringBoot指标监控_添加Actuator功能 Spring Boot Actuator可以帮助程序员监控和管理SpringBoot应用&#xff0c;比如健康检查、内存使用情况统计、线程使用情况统计等。我 们在SpringBoot项目中添加Actuator功能&#xff0c;即可使用Actuator监控 项目&#xff0c;用法如…

geojson文件规格

geojson文件示例&#xff0c; {"type": "FeatureCollection","features": [{"type": "Feature","geometry": {"type": "Point","coordinates": [102.0, 0.5]},"properties&q…

【每日力扣】141. 环形链表与142. 环形链表 II

&#x1f525; 个人主页: 黑洞晓威 &#x1f600;你不必等到非常厉害&#xff0c;才敢开始&#xff0c;你需要开始&#xff0c;才会变的非常厉害 141. 环形链表 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟…

电脑实时监控软件分享|好用实时屏幕监控软件有哪些?

在当今数字化工作环境和远程办公日益普及的背景下&#xff0c;电脑实时监控软件成为了企业管理、教育监控、家庭监护等多个领域的必备工具。这些软件不仅能够帮助管理者实时了解员工的工作状态&#xff0c;确保工作效率&#xff0c;还能有效防止数据泄露&#xff0c;保护企业或…

热敏电阻怎么进行性能测试?并以LabVIEW为例进行说明

过程也可用于执行热敏电阻测量。RTD和热敏电阻遵循非常相似的功能原理&#xff0c;测量步骤与下面提供的步骤相同。有关热敏电阻的更多信息&#xff0c;请参阅本文档。 查找设备引脚排列 在连接任何信号之前&#xff0c;请找到您的设备引脚排列。 打开NI MAX并展开设备和接口。…

python环境下labelImg图片标注工具的使用

labelimg GitHub地址 python环境下labelImg图片标注工具的使用 1. 写在开头2. 如何使用2.1安装2.2 启动2.2.1 先启动后设置标注的目录2.2.2 指定标注的目录和预设置的标签 2.3 设置自动保存和显示类别。2.4 保存文件类型2.5 [快捷键](https://github.com/HumanSignal/labelImg…

每天五分钟计算机视觉:通过交并比判断对象检测算法的性能

本文重点 在对象检测领域,交并比(Intersection over Union,简称IoU)是衡量算法性能的重要指标之一。它不仅直观地反映了预测框与真实框之间的重叠程度,还是判断算法是否“运行良好”的关键依据。 那个定位是好的? 对象检测任务中,我们希望不仅检测到对象,同时我们还希…

java--GUI

目录 GUI&#xff08;Graphical User Interface&#xff09; swing 窗口(JFrame) 面板(JPanel) 流水布局(FlowLayout) 边界布局(BorderLayout) ​编辑 网格布局(GridLayout) 按钮(JButton) 标签组件&#xff0c;用来设置文字(JLabel) 单行文本框组件(JTextField) 多…

京东淘宝1688商品采集商品数据抓取API

item_get-获得淘宝商品详情 item_search 关键字搜索商品 公共参数 请求地址: taobao/item_search 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&a…

探索大语言模型在信息提取中的应用与前景

随着人工智能技术的快速发展&#xff0c;大语言模型&#xff08;LLMs&#xff09;在自然语言处理&#xff08;NLP&#xff09;领域取得了显著的进展。特别是在信息提取&#xff08;IE&#xff09;任务中&#xff0c;LLMs展现出了前所未有的潜力和优势。信息提取是从非结构化文本…

分享三维地理模型制作实践

前言 地理信息系统&#xff08;GIS&#xff09;是一种用于捕获、存储、检查和显示与地球表面位置相关的数据的计算机系统。GIS可以在一张地图上显示许多不同类型的数据&#xff0c;如街道、建筑物和植被。这使人们能够更容易地看到、分析和理解模式和关系。 GIS可以使用包括位…

vivado Versal ACAP 可编程器件镜像 (PDI) 设置

Versal ACAP 可编程器件镜像 (PDI) 设置 下表所示 Versal ACAP 器件的器件配置设置可搭配 set_property <Setting> <Value> [current_design] Vivado 工具 Tcl 命令一起使用。 注释 &#xff1a; 在 Versal ACAP 架构上 &#xff0c; 原先支持将可编程器…

机器学习项目实践-基础知识部分

环境建立 我们做项目第一步就是单独创建一个python环境&#xff0c;Python新的隔离环境 创建&#xff1a;python -m venv ml 使用&#xff1a;.\Scripts\activate python -m venv ml 是在创建一个名为 ml 的虚拟环境&#xff0c;这样系统会自动创建一个文件夹ml&#xff0c;…

Jira Server 不维护了,如何将 Jira 平滑迁移到阿里云云效

作者&#xff1a;天彤 Atlassian 在 2020 年官方发布公告&#xff0c;从 2021 年起停止 Jira Server 产品的销售&#xff0c;并且在 2024 年彻底停止 Server 端产品的服务支持&#xff0c;这对于国内使用 Jira 产品的企业和研发团队造成了不小的影响。而此时国内很多 DevOps 产…

寒武纪及瑞芯微平台调用加速调研

文章目录 1 寒武纪加速平台简介1.1 加速平台简介1.1.1 算力硬件1.1.2 配套软件 1.2 部署流程简介1.3 部署环境搭建1.3.1 安装驱动1.3.2 安装CNToolKit1.3.3 配置模型移植开发环境 1.4 模型部署1.4.1 模型转换旧文件格式1.4.2 量化模型生成1.4.3 验证结果1.4.4 离线模型生成 1 寒…

远程服务器 docker XRDP 桌面访问 记录

需求描述: 我现在在远程连接 一台服务器&#xff0c;由于需要实验环境需要GUI 和 桌面系统&#xff0c;但是又想在 docker 中运行。因此&#xff0c;我现在首先需要通过 ssh 连接服务器&#xff0c;然后再服务器中连接 docker. REF: https://github.com/danielguerra69/ubuntu-…