字符串左旋

题目:字符串左旋

内容:实现一个函数,可以左旋字符串中的K个字符。

例如:

ABCDEF左旋一个字符可以得到BCDEFA

ABCDEF左旋两个字符可以得到CDEFAB

方法一:移动字符

#include <stdio.h>
#include <string.h>char* left_round(char* str, int k)
{int len = strlen(str);int times = k % len;for (int i = 0; i < times; i++){char tmp = str[0];int j = 0;for (; j < len - 1; j++){str[j] = str[j + 1];}str[j] = tmp;}return str;
}int main()
{char str[] = { "ABCDEF" };int k = 0;scanf("%d", &k);left_round(str, k);printf("%s", str);return 0;
}

方法二:逆序字符串

//参考代码#include <stdio.h>
#include <string.h>void reverse(char* str, int strat, int end)
{int i, j;char tmp;for (i = strat, j = end; i < j; i++, j--){tmp = str[i];str[i] = str[j];str[j] = tmp;}
}void left_round(char* str, int k)
{int len = strlen(str);int times = k % len;reverse(str, 0, k - 1);//逆序前段字符reverse(str, k, len - 1);//逆序后段字符reverse(str, 0, len - 1);//逆序整体字符
}int main()
{char str[] = { "ABCDEF" };int k = 0;scanf("%d", &k);left_round(str, k);printf("%s", str);return 0;
}

方法三:使用字符函数

#include <stdio.h>
#include <string.h>void left_round(char* str, int k)
{int len = strlen(str);int times = k % len;		//假设结果为3  可使用malloc len+1 来设置大小char tmp[256];				//相当于一个空箱子strcpy(tmp, str + times);  //将ABCDEF  中的DEF拷贝进入tmpstrncat(tmp, str, times);  //将ABCDEF  中的ABC附加在tmp后,times是限制个数strcpy(str, tmp);		   //最后将tmp拷贝进入str
}int main() 
{char str[] = { "ABCDEF" };int k = 0;scanf("%d", &k);left_round(str, k);printf("%s", str);return 0;
}

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

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

相关文章

Faster-RCNN 和 Mask-RCNN详解

Faster-RCNN &#xff0c;Mask-RCNN原理 一、摘要1.1 图像分割1.2 语义分割与实例分割 二、Faster-RCNN2.1 Faster-RCNN模型架构2.2 &#x1f34a;深度卷积网络&#xff08;backbone&#xff09;2.3 &#x1f34e;RPN&#xff08;Region Proposal Network&#xff09;2.4 &…

VS2019 添加程序包

dotnet add package AlibabaCloud.SDK.Bailian20230601 来提示添加程序包 选择菜单栏 项目----管理NuGet程序包 输入程序包的名称&#xff0c;然后添加即可&#xff0c; 这只是给当前工程添加&#xff0c;并不是给VS添加&#xff0c;所以你打开新工程&#xff0c;需要使用的话…

Android BitmapShader setLocalMatrix缩放Bitmap高度重新onMeasure,Kotlin

Android BitmapShader setLocalMatrix缩放Bitmap高度重新onMeasure&#xff0c;Kotlin <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://sc…

ps基本操作

目录 ps基本操作 ps基本操作

【C++入门学习指南】:函数重载提升代码清晰度与灵活性

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; C入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一、函数重载1.1 函数重载的概念1.2 函数重载的作用1.3 C支持函数重载的原理1.4 扩展 &…

Kubernetes基础(十一)-CNI网络插件用法和对比

1 CNI概述 1.1 什么是CNI&#xff1f; Kubernetes 本身并没有实现自己的容器网络&#xff0c;而是借助 CNI 标准&#xff0c;通过插件化的方式来集成各种网络插件&#xff0c;实现集群内部网络相互通信。 CNI&#xff08;Container Network Interface&#xff0c;容器网络的…

Leetcode—535. TinyURL 的加密与解密【中等】

2024每日刷题&#xff08;110&#xff09; Leetcode—535. TinyURL 的加密与解密 实现代码 class Solution { public:// Encodes a URL to a shortened URL.string encode(string longUrl) {while(!urlToCode.count(longUrl)) {string code;for(int i 0; i < 6; i) {code…

【01】C++入门

文章目录 Ⅰ 命名空间1. 命名空间域的产生2. 命名空间域的定义3. 命名空间域的使用 Ⅱ 缺省参数1. 缺省的概念2. 缺省的分类3. 声明和定义不能同时存在缺省参数 Ⅲ 函数重载1. 函数重载概念2. 编译器如何实现函数重载 Ⅳ 引用1. 引用的概念2. 引用的特性3. 引用的使用场景4. 引…

云服务器也能挂游戏 安卓模拟器

安卓模拟器云服务器 什么是BlueStacks模拟器主机&#xff1f; 特网科技基于Windows操作系统预装了BlueStacks Android模拟器您能够通过Android模拟器安装Android应用程序、如APP游戏、安卓APP、APP游戏等。 我可以在主机上安装应用程序吗&#xff1f; 你可以在BlueStacks模…

css1基础选择器

大纲 一.标签选择器 比较简单&#xff0c;前面直接写目标标签 二.类选择器 应用 例子 三.多类名选择器&#xff08;调用时中间用空格隔开&#xff09; 四.id选择器 应用 五.通配符选择器 应用 六.总结

汽车租赁系统

目录 一.研究背景 二.系统架构 1、SSM 2、JAVA 3、MySQL 4、系统架构 三.系统功能 1、车辆管理 2、客户管理 3、销售管理 4、统计分析 四.系统实现 五.结论总结 一.研究背景 传统的销售与信息统计管理都主要依靠人工&#xff0c;处理出的销售数据量与使用管理系统…

SpringBoot第二天

Bean管理 Bean扫描 在Spring中&#xff0c;Bean的扫描有两种写法 第一种是在xml配置文件中用标签扫描 <context:component-scan basepackage"com.cacb"/> 第二种是是注解扫描 ComponentScan(basePackages"com.cacb") 而在SpringBoot中&#xf…