C语言实现一个函数左旋字符串中K个字符的方法有哪些
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章主要讲解了"C语言实现一个函数左旋字符串中K个字符的方法有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C语言实现一个函数左旋字符串中K个
千家信息网最后更新 2025年01月23日C语言实现一个函数左旋字符串中K个字符的方法有哪些
这篇文章主要讲解了"C语言实现一个函数左旋字符串中K个字符的方法有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C语言实现一个函数左旋字符串中K个字符的方法有哪些"吧!
法一、将左旋1次这个动作执行k次
这个方法的思路我来简单介绍一下:
现有1个字符串abcd
我们将a移出来,然后bcd前会空出一个位置
将bcd向前移动一个位置,最后把a放入最后一个位置,即可完成1次左旋
那么1次完成了,对于左旋k次呢?实际上也就是把上述操作再执行k-1次。
代码如下(示例):
#include#include void left_move(char*arr, int k)//arr传过来的是首元素地址,你可以用一个指针去接收{ assert(arr); int i = 0; int len = strlen(arr);//计算arr的长度 for (i = 0;i < k;i++) { int j = 0; char tmp = *arr; for (j = 0;j < len - 1;j++) { arr[j] = arr[j + 1];//arr[j]=*(arr+j) } arr[len - 1] = tmp; }}int main(){ int x = 0; char arr[] = "abcd"; printf("输入你想左旋几个字符:\n"); scanf("%d", &x); left_move(arr, x); printf("%s\n", arr);}
ps:这里多使用一个assert是为了防止函数传过来的是空指针,会进行断言,如果传的是空指针,系统会报错
法二、多次逆序字符串
我们以ABCDEF左旋2次进行举例:
左旋2次也就是把AB移动到CDEF后面,下面看我操作,先将AB、CDEF分为两个组
将两个组分别逆序
最后整体逆序得到最终结果CDEFAB
那么左旋k次也就是把2变成k即可,整体仍然是这3个步骤,非常方便
代码如下(示例):
#include#include void reverse(char*l, char*r)//逆序函数{ assert(l&&r); while (l < r) { char tmp = *l; *l = *r; *r = tmp; l++; r--; }}void left_move(char*arr, int k){ assert(arr); int len = strlen(arr); reverse(arr,arr+k-1);//第一个组逆序 reverse(arr+k,arr+len-1);//第二个组逆序 reverse(arr,arr+len-1);//整体逆序}int main(){ int x = 0; char arr[] = "abcdef"; printf("输入你想左旋几个字符:\n"); scanf("%d", &x); left_move(arr, x); printf("%s\n", arr);}
ps:关于每一次的逆序函数:以abcd举例,就是a和d换位,b和c换位,得到dcba,然后这样的逆序进行三次即可得到所谓的左旋。
感谢各位的阅读,以上就是"C语言实现一个函数左旋字符串中K个字符的方法有哪些"的内容了,经过本文的学习后,相信大家对C语言实现一个函数左旋字符串中K个字符的方法有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
左旋
字符
逆序
函数
字符串
方法
语言
也就是
位置
指针
整体
学习
两个
代码
内容
就是
思路
示例
移动
输入
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
酷楠网络技术
服务器管理器没有dhcp
软件开发做项目什么科目
海口智游网络技术有限公司
网络安全法制意识
怀旧服能在哪个服务器联机
文件服务器备份工具
地下城与勇士跨6服务器bug
个人购买网络服务器
和县软件开发项目管理
公司网络安全ppt图片
服务器维护及管理教程
河南正数网络技术有限公司王景仲
栖莱(北京)互联网科技
网络安全模型的不足之处
学java软件开发课程
sql数据库怎么优化
软件开发公司实力怎么判断
solr 数据库索引
命运而服务器离线什么意思
个人网络安全防范为什么难
Gp数据库怎么数求月底
各类软件开发
软件开发收入属于什么收入
自学网络安全能找到工作吗
烟台大学数据库考试答案
打印机联机显示重启打印服务器
企业物理网络安全方案
钉钉服务器地址无法解析
网络安全对抗赛