字符串左旋

简介: 字符串左旋

实现一个函数,可以左旋字符串中的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生成方式。好,那就来了解一下吧。
220 1
JWT:你好了解一下 只要两分钟!
|
移动开发 小程序 Android开发
Android 端02:小程序双向通道 -native2tiny|学习笔记
快速学习 Android 端02:小程序双向通道 -native2tiny
168 0
Android 端02:小程序双向通道 -native2tiny|学习笔记
|
数据处理 Windows
数据处理第2节:将列转换为正确的形状
博客原文:https://suzan.rbind.io/2018/01/dplyr-tutorial-1/ 作者:Suzan Baert 这是一系列dplyr函数中的第二篇文章。
1123 0
|
7天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
6天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
321 130
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
|
18天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1331 8
|
5天前
|
监控 JavaScript Java
基于大模型技术的反欺诈知识问答系统
随着互联网与金融科技发展,网络欺诈频发,构建高效反欺诈平台成为迫切需求。本文基于Java、Vue.js、Spring Boot与MySQL技术,设计实现集欺诈识别、宣传教育、用户互动于一体的反欺诈系统,提升公众防范意识,助力企业合规与用户权益保护。