字符串的左旋转操作,回旋字符串

  字符串的左旋转操作,回旋字符串

  大家好。今天给大家带来的是旋转弦的第二种解法,包括第三种解法(通过库函数快速实现)。

  正文简单介绍了一下我提到的弦旋转的成品,然后以绘图的形式展示给大家:

  最上面是我们输入的字符串,最下面是我们想要得到的字符串。旋转字符串一次,将第一个字符旋转到最后一个字符。之前讲过第一个版本,链接在这里供大家参考。我不会在这里解释第一种解决方案[https://blog.51cto.com/u_15723046/5687002]

  代码如上,

  好了,下面我们来解释一下第二种解决方案:

  我把第一个元素放入存储,然后下面的字符依次向前旋转:

  第一次旋转后:

  你也可以这么看,

  取出第一个字符,然后逐渐向前覆盖下面的字符,

  这样的话,这样做的话,效率会比第一种更快,交换的次数也会减少。让我给你看看代码:

  上面的n是要旋转的字符数,下面的sz-1是要交换的次数。为什么用sz-1?因为下面是设置arr[j]=arr[j 1];

  如果j=sz-1,那么j 1=sz就会出界,而且由于arr[j 1]对应的值正好是j 1==sz-1时的最后一个字符,将最后一个字符赋给前一个字符可以停止循环,又由于我们只需要交换sz-1次,所以以图片为例,我们四个角色只轮换了三次。

  这里的橙色框是存储第一个字符的地方,数组arr[0]在里面。因为如果是I,虽然第一次是0,第二次是1,但是每次交换第一个元素,我们只是把第一个字符赋给了char变量。

  看下面的橙色方框,就是把第一个字符复制到最后一个字符,因为

  因为j sz-1,当j为sz-2时,退出循环,但是执行最后一次j。现在,即使j的值是sz-1,它也只是恰好是最后一个字符的下标。我们将第一个元素赋给最后一个字符,这样就完成了一个循环。但是,如果用上面的n来判断次数的话,如果你想交换两个字符,你只要把n输入2就可以了,仅此而已。整整两次。最后,我们返回str的地址。其实arr地址是可以的,但是我习惯这样写,因为如果字符串涉及到地址的运算,会改变第一个地址的位置。

  好了,这一次,我们已经解释完了字符交换的第二种解决方案。如果看完之后觉得有所收获,那将是我最大的感动!

  再见!

  ,

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • office2010激活密钥大全 怎么永久激活office2010
  • project2010产品密钥免费_project2010激活密钥永久激活码
  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • chatgpt是什么?为什么这么火?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • CAD中怎么复制图形标注尺寸不变,CAD中怎么复制图形线性不变
  • cad中怎么创建并使用脚本文件,cad怎么运行脚本
  • cad中快速计算器的功能,cad怎么快速计算
  • cad中快速修改单位的方法有哪些,cad中快速修改单位的方法是
  • cad中心点画椭圆怎么做,cad轴测图怎么画椭圆
  • CAD中常用的快捷键,cad各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: