字符串左旋

简介: 字符串左旋

实现一个函数,可以左旋字符串中的k个字符。


7b7fde021b069b8ed7dc507542db8c2a_ef7705b7c8364e3191070fc4d05d1448.png


代码实现如下


#include<stdio.h>
#include<string.h>
void left_revolve(char ch[], int k)
{
  int len = strlen(ch);
  k %= len;
  int i = 0;
  //4.根据k值,重复123操作
  for (i = 0; i < k; i++)
  {
  //1.创建临时变量存储首字符
  char tmp = ch[0];
  int j = 0;
  //2.字符串整体向前移动一个字符的大小
  for (j = 0; j < len - 1; j++)
  {
    ch[j] = ch[j + 1];
  }
  //3.将首字符存放到字符串末尾
  ch[len - 1] = tmp;
  }
}
int main()
{
  char ch[] = "abcdef";
  int k = 0;
  printf("请输入需要旋转字符的个数>");
  scanf("%d", &k);
  left_revolve(ch, k);
  printf("%s\n", ch);
  return 0;
}


37371f7a03c3909f2ac1ff98d6a0205d_ca9815e8ca1c4705ad9bff0a0b0fb4ab.png


既然可以将前k个字符左旋之后置于字符串末尾,那么也可以得到->
先将前k个字符倒序,再将剩余字符倒叙,最后再将前后两部分倒序

a6bfd28466a75050f2074017f387471f_b3fc4ac5034f4fbf96d21b96daad0080.png

代码实现如下


#include<stdio.h>
#include<assert.h>
#include<string.h>
void reverse(char* left, char* right)
{
  assert(left && right);
  while (left < right)
  {
  char tmp = *right;
  *right = *left;
  *left = tmp;
  left++;
  right--;
  }
}
void left_revolve(char ch[], int k)
{
  int len = strlen(ch);
  k %= len;
  //1.先逆序前k个字符
  reverse(ch, ch + k - 1);
  //2.再逆序剩余的字符
  reverse(ch + k, ch + len - 1);
  //3.最后逆序整个字符串
  reverse(ch, ch + len - 1);
}
int main()
{
  char ch[] = "abcdef";
  int k = 0;
  printf("请输入需要旋转字符的个数>");
  scanf("%d", &k);
  left_revolve(ch, k);
  printf("%s\n", ch);
  return 0;
}

dd677be9635a6e0606d95a96537dea35_825ac477432c4b2582f619940c6f91fc.png


目录
相关文章
|
Linux 数据安全/隐私保护 虚拟化
Linux 环境搭建以及xshell远程连接
Linux 环境搭建以及xshell远程连接
|
存储 JSON 算法
JWT:你好了解一下 只要两分钟!
小马经常看到招聘要求中会写着一个词:JWT。没接触过的同学可能一愣,这是啥高级玩意?看起来很唬人的样子,不能查,一查就是个token生成方式。好,那就来了解一下吧。
284 1
JWT:你好了解一下 只要两分钟!
|
移动开发 小程序 Android开发
Android 端02:小程序双向通道 -native2tiny|学习笔记
快速学习 Android 端02:小程序双向通道 -native2tiny
179 0
Android 端02:小程序双向通道 -native2tiny|学习笔记
|
数据处理 Windows
数据处理第2节:将列转换为正确的形状
博客原文:https://suzan.rbind.io/2018/01/dplyr-tutorial-1/ 作者:Suzan Baert 这是一系列dplyr函数中的第二篇文章。
1144 0
|
5天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
15天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
9天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
586 212
|
4天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
233 138