C语言--左旋字符/右旋字符实现及其判断

news/发布时间2024/5/14 13:46:05

1.题目解释

左旋就是把对应的左边的放到右边

例如ABCDEF左旋2个字符就是BCDEFAB,左旋3个字符就是DEFABC;

2.代码实现

void leftmove(char* str, int k)
{int j = 0;assert(str);for (j = 0; j < k; j++){char temp = *str;int len = strlen(str);int i = 0;for (i = 0; i < len - 1; i++){*(str + i) = *(str + i + 1);}*(str + len - 1) = temp;}
}
int main()
{char arr[] = "abcdefgh";int k = 0;scanf("%d", &k);leftmove(arr, k);printf("%s\n", arr); return 0;
}

(1)这个的逻辑就是把每符合条件的一个字符都向前移动

(2)把这个开始的字符拷贝一份,等到所有的全部前移之后在把这份拷贝放到最后,循环进行

3.代码优化

//这个优化了刚才的算法,因为刚才的算法可能让某一些元素//进行多次的移动,降低了代码的执行效率
void reverse(char* left, char* right)
{while (left < right){char temp = *left;*left = *right;*right = temp;left++;right--;}
}
void leftmove(char* str, int k)
{int len = strlen(str);//左边逆序reverse(str, str + k - 1);//右边逆序reverse(str + k, str + len - 1);//整体逆序reverse(str, str + len - 1);
}
int main()
{char arr[] = "abcdefgh";int k = 0;scanf("%d", &k);leftmove(arr, k);printf("%s\n", arr); return 0;
}

(1)因为第一种里面靠后的efgh等需要多次移动,比较冗余,

(2)这种解决方法很巧妙,不容易想到,他的做法就是先把左旋的字符逆序,再把不需要左旋的

字符逆序,最后再把整体的字符逆序,经过验证发现可以得到我们想要的结果;

4.左旋的判断

判断一个字符串是不是另外的一个字符串左旋得到的

int isleftmove(char* str1, char* str2)
{int j = 0;assert(str1 && str2);int len = strlen(str1);for (j = 0; j < len; j++){char temp = *str1;int i = 0;for (i = 0; i < len - 1; i++){*(str1 + i) = *(str1 + i + 1);}*(str1 + len - 1) = temp;if (strcmp(str1, str2) == 0)return 1;}return 0;
}
int main()
{char arr1[] = "abcdefgh";char arr2[] = "efghabcd";int ret = isleftmove(arr1, arr2);if (ret == 1){printf("yes\n");}else{printf("not\n");}return 0;
}

(1)这里调用库函数,把已知的字符串进行左旋,每进行一次都和另外的一个进行比较,调用

strcmp函数进行比较;

int isleftmove(char* str1, char* str2)
{int len1 = strlen(str1);int len2 = strlen(str2);if (len1 != len2){return 0;}strncat(str1, str1, len1);if ((strstr(str1, str2) == NULL))return 0;elsereturn 1;
}
int main()
{char arr1[30] = "abcdefgh";//放两次,就可以找到所有的符合条件的结果char arr2[] = "efghabcd";int ret = isleftmove(arr1, arr2);if (ret == 1){printf("yes\n");}else{printf("not\n");}return 0;
}

(1)这是一种更加高效的解法,把一个字符串并排写两遍,就可以得到所有的可能情况

(2)先把str1变成2份子放到第一个数组里面,这里使用了strncat函数,然后使用strstr函数看看

在这个里面能不能找到str2字符串,返回空指针就无法找到,否则就可以找到,这样就不用循环;

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

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

如何在Spring Boot中启用HTTPS?

在Spring Boot中启用HTTPS是一个增强应用程序安全性的重要步骤。下面我将介绍如何将一个Spring Boot项目配置成支持HTTPS协议。 引入 在现代的网络通信中&#xff0c;安全性成为了一个不能忽视的要求。特别是当我们谈论到数据传输时&#xff0c;保护用户信息的安全性是非常重要…

PHP+vue+mysql网络考试系统成绩学习资料系统7wivi

开发语言&#xff1a;php 后端框架&#xff1a;Thinkphp 前端框架&#xff1a;vue.js 服务器&#xff1a;apache 数据库&#xff1a;mysql 运行环境:phpstudy/wamp/xammp等 随着互联网的发展&#xff0c;教育也迎来了互联网的春天&#xff0c;现代教育更加依托于互联网的应用&a…

[HTML]Web前端开发技术30(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要! 目录 前言 网页标题:手机批发业务-商品备选区<

【Python笔记-设计模式】组合模式

一、说明 组合模式是一种结构型设计模式&#xff0c; 你可以使用它将对象组合成树状结构&#xff0c; 并且能像使用独立对象一样使用它们。 (一) 解决问题 处理树形结构&#xff1a;可以很好地处理树形结构的数据&#xff0c;使得用户可以统一对待单个对象和对象组合。统一接…

Android LruCache源码分析

文章目录 Android LruCache源码分析概述LruCache和LinkedHashMap关系源码分析属性写入数据读取数据删除缓存 Android LruCache源码分析 概述 LruCache&#xff08;Least Recently Used Cache&#xff0c;最近最少使用缓存&#xff09;是 Android 中的一种缓存机制。 根据数据…

《图解HTTP》笔记1:http的诞生

1&#xff0c;http的诞生&#xff1a; 1.1 为共享知识而生 我们现在使用web&#xff08;World Wide Web的简称&#xff0c;即万维网&#xff09;浏览器&#xff0c;目前可以输入一个网址&#xff08;http://www.baidu.com)&#xff0c;就会有一个网页显示出来。 最开始设想出…

外包干了3个月,技术倒退1年。。。

先说情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…

gitlab的使用

前一篇文章我们已经知道Git人人都是中心&#xff0c;那他们怎么交互数据呢&#xff1f; • 使用GitHub或者码云等公共代码仓库 • 使用GitLab私有仓库 目录 一、安装配置gitlab 安装 初始化 这里初始化完成以后需要记住一个初始密码 查看状态 二、使用浏览器访问&#xf…

Sui基金会与沙迦美国大学宣布合作开设区块链学院

沙迦美国大学&#xff08;American University of Sharjah&#xff0c;AUS&#xff09;作为中东领先的创新中心&#xff0c;与Sui合作推出了一个新的区块链研究中心&#xff0c;进一步提升了其在创新领域的声誉。 该举措是沙迦酋长国旨在将自己定位为教育和研究区域中心的一部…

linux增加物理磁盘并挂载到文件系统

centos7增加物理磁盘并挂载到文件系统 1、查看所有磁盘情况 fdisk -l2、创建挂载路径 mkdir /data3、格式化磁盘 #磁盘filesystem(上图标红处) mkfs.xfs -f /dev/sda建议 与其它磁盘文件系统保持一致&#xff0c;我这里是xfs 可通过 cat /dev/sda查看 4、挂载 mount /dev/…

Observability:使用 OpenTelemetry 和 Elastic 监控 OpenAI API 和 GPT 模型

作者&#xff1a; 来自 Elastic David Hope ChatGPT 现在非常火爆&#xff0c;甚至席卷了整个互联网。 作为 ChatGPT 的狂热用户和 ChatGPT 应用程序的开发人员&#xff0c;我对这项技术的可能性感到非常兴奋。 我看到的情况是&#xff0c;基于 ChatGPT 的解决方案将会呈指数级…

Android约束布局中用ConstraintHelper实现过渡动画效果

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。 &#x1f449;点击跳转到教程 一.创建一个类CircularRevealHelper继承ConstraintHelper代码如下 /*** Author: ly* Da…

五种多目标优化算法(MOJS、MOGWO、NSWOA、MOPSO、NSGA2)性能对比,包含6种评价指标,9个测试函数(提供MATLAB代码)

一、5种多目标优化算法简介 1.1MOJS 1.2MOGWO 1.3NSWOA 1.4MOPSO 1.5NSGA2 二、5种多目标优化算法性能对比 为了测试5种算法的性能将其求解9个多目标测试函数&#xff08;zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3&#xff09;&#xff0…

群晖NAS DSM7.2.1安装宝塔之后无法登陆账号密码问题解决

宝塔的安装就不在这赘述了&#xff0c;只说下&#xff0c;启动之后默认账号密码无法登陆的问题。 按照上面给出的账号密码&#xff0c;无法登陆 然后点忘记密码&#xff0c;由于是docker安装的&#xff0c;根目录下没有/www/server/panel 。 也没有bt命令 要怎么修改呢。 既然…

微信小程序uniapp劳务咨询系统知识百科考试系统java+python+nodejs+php均支持

使用劳务咨询服务平台小程序的分别管理员和用户二个权限子模块。 管理员所能使用的功能主要有&#xff1a;首页、个人中心、用户管理、百科分类管理、知识百科管理、地区信息管理、劳务需求管理、试卷管理、试题管理、论坛交流、系统管理、考试管理等。 用户用户端可以实现首页…

爬虫知识--03

数据存mysql import requests from bs4 import BeautifulSoup import pymysql# 链接数据库pymysql conn pymysql.connect(userroot,password"JIAJIA",host127.0.0.1,databasecnblogs,port3306, ) cursor conn.cursor() cursor conn.cursor()# 爬数据 res request…

Clickhouse的安装

1.准备工作 确定防火墙处于关闭状态 ulimit -a 2.CentOS取消打开文件数限制 &#xff08;1&#xff09;在 hadoop102 的 /etc/security/limits.conf 文件的末尾加入以下内容 sudo vim /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 * soft nproc …

ChatGPT在数据分析OKR计划中的应用

ChatGPT在数据分析OKR计划中的应用 ​ 现在大多数公司引入了OKR&#xff08;objective & key result&#xff09;计划&#xff0c;数据分析师也需要定期制定和检查自己的OKR计划。我们不仅可以利用ChatGPT辅助制定OKR计划&#xff0c;也可以让其对OKR计划内容进行调整、优…

五种多目标优化算法(MOGWO、MOJS、NSWOA、MOPSO、MOAHA)性能对比(提供MATLAB代码)

一、5种多目标优化算法简介 1.1MOGWO 1.2MOJS 1.3NSWOA 1.4MOPSO 1.5MOAHA 二、5种多目标优化算法性能对比 为了测试5种算法的性能将其求解9个多目标测试函数&#xff08;zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3&#xff09;&#xff0…

LeetCode二叉搜索树最近节点查询

问题描述 给你一个 二叉搜索树 的根节点 root &#xff0c;和一个由正整数组成、长度为 n 的数组 queries 。 请你找出一个长度为 n 的 二维 答案数组 answer &#xff0c;其中 answer[i] [mini, maxi] &#xff1a; mini 是树中小于等于 queries[i] 的 最大值 。如果不存在…
推荐文章