【字符串左旋】
字符串左旋
1.题目要求
实现一个函数,可以左旋字符串中的k个字符。
例如:
ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB
2.解法:
设计循环使其可以旋1次,然后让他执行n次是一个最简单的思路:
函数实现:
void TurnLeft(char* arr, int k)//字符串左旋
{int i = 0;int j = 0;size_t len = strlen(arr);for (i = 0; i < k; i++){char temp = arr[0];for (j = 0; j < len - 1; j++){*(arr + j) = *(arr + j + 1);}*(arr + len - 1) = temp;}
}
改进一:
这个思路当然可以,但是一次一次转毕竟太麻烦,就不能一次到位么?
当然可以,我们可以选择拼接法,一次到位:
函数实现:
void leftRound(char * arr, int k)
{size_t len = strlen(arr);int pos = k % len; //断开位置的下标char temp[256] = { 0 }; //更准确的话可以选择malloc len + 1个字节的空间来做这个tempstrcpy(temp, arr + pos); //先将后面的全部拷过来strncat(temp, arr, pos); //然后将前面几个接上strcpy(arr, temp); //最后拷回去
}
改进二:
这个方法要用到一个数组形成的辅助空间,让人觉得有点不爽,还可以有更好的选择,例如ABCDEFG,左旋3次后变成DEFGABC,有一个特殊的操作方式:
先将要左旋的前三个家伙逆序(CBADEFG),然后将后半段也逆序(CBAGFED),最后整体逆序(DEFGABC)即可。这样只需要做数值交换即可,可以写一个函数帮我们完成局部逆序,代码如下:
函数实现:
void reverse_part(char *str, int start, int end) //将字符串从start到end这一段逆序
{int i = 0;int j = 0;char temp = '0';for (i = start, j = end; i < j; i++, j--){temp = *(str + i);*(str +i) = *(str +j);*(str +j) = temp;}
}void leftRound(char * arr, int k)
{size_t len = strlen(arr);int pos = k % len;reverse_part(arr, 0, pos - 1); //逆序前段reverse_part(arr, pos, len - 1); //逆序后段reverse_part(arr, 0, len - 1); //整体逆序
}
这样就舒服多了。
相关文章:
【字符串左旋】
字符串左旋 1.题目要求 实现一个函数,可以左旋字符串中的k个字符。 例如: ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 2.解法: 设计循环使其可以旋1次,然后让他执行n次是一个最简单的思路: 函数实现…...
Docker Dirtypipe(CVE-2022-0847)漏洞复现与分析容器逃逸
安装环境 ./metarget cnv install cve-2022-0847 --verbose 原理 同脏牛,通过写只读内存,对映射的内存做篡改 EXP docker run --rm -it -v $(pwd):/exp --cap-addCAP_DAC_READ_SEARCH ubuntu如果提示 Unknown capability to add: "CAP_CAP_DAC_RE…...
python接口自动化测试框架2.0,让你像Postman一样编写测试用例,支持多环境切换、多业务依赖、数据库断言等
项目介绍 接口自动化测试项目2.0 软件架构 本框架主要是基于 Python unittest ddt HTMLTestRunner log excel mysql 企业微信通知 Jenkins 实现的接口自动化框架。 前言 公司突然要求你做自动化,但是没有代码基础不知道怎么做?或者有自动化…...
Vue.js2+Cesium1.103.0 九、淹没分析效果
Vue.js2Cesium1.103.0 九、淹没分析效果 Demo <template><divid"cesium-container"style"width: 100%; height: 100%;"><spanid"button"style"position: absolute; right: 50px; top: 50px; z-index: 999; font-size: 24px…...
SpringBoot案例-部门管理-新增
根据页面原型,明确需求 页面原型 需求 阅读接口文档 接口文档链接如下: 【腾讯文档】SpringBoot案例所需文档 https://docs.qq.com/doc/DUkRiTWVaUmFVck9N 思路分析 前端在输入要新增的部门名称后,会以JSON格式将数据传入至后端…...
微信小程序中背景图片如何占满整个屏幕,拉伸
不变形 1. 在页面的wxss文件中,设置背景图片的样式: page{background-image: url(图片路径);background-size: 100% 100%;background-repeat: no-repeat; }2. 在页面的json文件中,设置背景图片的样式: {"backgroundTextStyl…...
Java并发编程(四)线程同步 中 [AQS/Lock]
概述 Java中可以通过加锁,来保证多个线程访问某一个公共资源时,资源的访问安全性。Java提出了两种方式来加锁 第一种是我们上文提到的通过关键字synchronized加锁,synchronized底层托管给JVM执行的,并且在java 1.6 以后做了很多…...
PyTorch深度学习环境安装(Anaconda、CUDA、cuDNN)及关联PyCharm
1. 关系讲解 Tytorch:Python机器学习库,基于Torch,用于自然语言处理等应用程序 Anaconda:是默认的python包和环境管理工具,安装了anaconda,就默认安装了conda CUDA:CUDA是一种由显卡厂商NVIDI…...
Active Directory安全和风险状况管理
风险评估和管理 风险评估和管理是主动安全性和合规性管理不可或缺的一部分。 发现关键基础设施组件中的风险行为和配置对于阻止网络入侵和预防网络攻击至关重要。帐户泄露和配置错误漏洞是用于破坏网络的常见技术。当评估、监控和降低 Active Directory 基础架构的风险时&…...
学术论文GPT源码解读:从chatpaper、chatwithpaper到gpt_academic
前言 之前7月中旬,我曾在微博上说准备做“20个LLM大型项目的源码解读” 针对这个事,目前的最新情况是 已经做了的:LLaMA、Alpaca、ChatGLM-6B、deepspeedchat、transformer、langchain、langchain-chatglm知识库准备做的:chatpa…...
单链表(C语言版)
单链表:理解、实现与应用 单链表(Singly Linked List)是一种常见的数据结构,用于存储一系列具有相同类型的元素,并通过节点之间的链接建立起它们的关系。每个节点包含一个数据元素和一个指向下一个节点的指针。相比于…...
初学vue3时应该注意的几个问题
初学vue3时应该注意的几个问题 声明响应式 响应式数据的声明在vue2的时候很简单,在data中声明就行了。但现在可以使用多个方式。 reactive用于声明Object, Array, Map, Set; ref用于声明String, Number, Boolean 使用reactive来声明基础数据类型(Str…...
基于Selenium技术方案的爬虫入门实践
通过爬虫技术抓取网页,动态加载的数据或包含 JavaScript 的页面,需要使用一些特殊的技术和工具。以下是一些常用的技术方法: 使用浏览器模拟器:使用像 Selenium、PhantomJS 或其他类似工具可以模拟一个完整的浏览器环境࿰…...
【C++入门到精通】C++入门 —— vector (STL)
阅读导航 前言一、vector简介1. 概念2. 特点 二、vector的使用1.vector 构造函数2. vector 空间增长问题⭕resize 和 reserve 函数 3. vector 增删查改⭕operator[] 函数 三、迭代器失效温馨提示 前言 前面我们讲了C语言的基础知识,也了解了一些数据结构࿰…...
git简单使用
1.在 远端仓库创建好仓库 2.在本地中创建仓库 mkdir 仓库名 cd 仓库名 3.初始化(可以省略) git init 4.添加远端仓库 git remote add origin https://gitee.com/zengtian_7/pet_home.git 5.初始化代码库:当你创建一个全新的代码库时,…...
CSS—选择器
目录 一、CSS简介 二、HTML页面中常用的元素 三、CSS语法规则 四、常用的选择器 五、CSS的三种使用方法 六、选择器参考 一、CSS简介 CSS (Cascading Style Sheets,层叠样式表),是一种用来为结构化文档(如 HTML 文档或 XML 应…...
【Unity实战系列】Unity的下载安装以及汉化教程
君兮_的个人主页 即使走的再远,也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,怎么说呢,其实这才是我以后真正想写想做的东西,虽然才刚开始,但好歹,我总算是启程了。今天要分享…...
电脑IP地址错误无法上网怎么办?
电脑出现IP地址错误后就将无法连接网络,从而无法正常访问互联网。那么当电脑出现IP地址错误时该怎么办呢? 确认是否禁用本地连接 你需要先确定是否禁用了本地网络连接,如果发现禁用,则将其启用即可。 启用方法:点击桌…...
机器视觉项目流程和学习方法
机器视觉项目流程: 00001. 需求分析和方案建立 00002. 算法流程规划和业务逻辑设计 00003. 模块化编程和集成化实现 00004. 调试和优化,交付客户及文档 学习机器视觉的方法: 00001. 实战学习,结合项目经验教训 00002. 学习…...
LNMP环境搭建wordpress以及跳转后台报404解决
基于上文配置好的LNMP环境继续搭建wordpress 目录 一.到官网下载tar.gz包,并上传到Linux上,也可以通过复制链接地址进行下载 二. 将wordpress中的所有文件移动到你nginx.conf中指定目录中 三.为wordpress配置数据库 四.到浏览器进行注册 1.刚开始…...
Neeshck-Z-lmage_LYX_v2行业落地:医疗科普插图AI辅助生成合规性实践
Neeshck-Z-lmage_LYX_v2行业落地:医疗科普插图AI辅助生成合规性实践 1. 引言:当AI绘画遇上医疗科普 想象一下,一位医学编辑正在为一篇关于“心脏瓣膜工作原理”的科普文章寻找配图。他需要的不是一张冰冷的医学解剖图,而是一张既…...
Rust的#[derive(PartialEq, Eq)]派生宏与等价关系在自定义类型中的一致性
Rust语言中的类型系统以其严谨性著称,而#[derive(PartialEq, Eq)]派生宏则为自定义类型的等价关系提供了优雅的实现方式。等价关系是数学中的基本概念,要求满足自反性、对称性和传递性。在编程中,正确实现这些性质对于数据比较、集合操作等场…...
LILYGO T-FPGA开发套件:ESP32-S3与FPGA协同开发指南
1. LILYGO T-FPGA开发套件概览LILYGO T-FPGA开发套件是一款将ESP32-S3无线微控制器与Gowin GW1NSR-4C FPGA集成在一起的创新硬件平台。这个M.2规格的模块设计非常巧妙,通过标准接口可以轻松插入配套的扩展底板,为开发者提供了完整的物联网可编程逻辑开发…...
Windows系统级输入模拟终极指南:Interceptor深度解析与应用实践
Windows系统级输入模拟终极指南:Interceptor深度解析与应用实践 【免费下载链接】Interceptor C# wrapper for a Windows keyboard driver. Can simulate keystrokes and mouse clicks in protected areas like the Windows logon screen (and yes, even in games).…...
Translumo终极指南:三步实现游戏和视频实时翻译的免费神器
Translumo终极指南:三步实现游戏和视频实时翻译的免费神器 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 你是…...
nli-MiniLM2-L6-H768保姆级教程:NLI服务审计日志与GDPR合规配置
nli-MiniLM2-L6-H768保姆级教程:NLI服务审计日志与GDPR合规配置 1. 服务概述与核心功能 nli-MiniLM2-L6-H768是一款基于自然语言推理(NLI)的轻量级服务,专门用于判断两个句子之间的逻辑关系。该服务采用Hugging Face开源的cross-encoder/nli-MiniLM2-L…...
Windows屏幕标注终极指南:免费开源工具ppInk完全教程
Windows屏幕标注终极指南:免费开源工具ppInk完全教程 【免费下载链接】ppInk Fork from Gink 项目地址: https://gitcode.com/gh_mirrors/pp/ppInk 在数字化教学、远程会议和产品演示日益普及的今天,拥有一款得心应手的屏幕标注工具变得尤为重要。…...
小米路由器WiFi下电脑互ping失败?别急着换设备,先检查这个隐藏的加密设置
小米路由器局域网设备互访失败?可能是加密协议在"作怪" 家里用小米路由器的朋友,有没有遇到过这样的场景:明明所有设备都连着同一个WiFi,电脑却死活ping不通NAS,手机看不到电视的投屏选项,游戏联…...
国家中小学智慧教育平台电子课本下载神器:3分钟搞定全套教材PDF
国家中小学智慧教育平台电子课本下载神器:3分钟搞定全套教材PDF 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 …...
别再折腾OpenVPN了!用Ubuntu 22.04 LTS快速搭建PPTP服务器(附Windows 11连接全流程)
Ubuntu 22.04 LTS下轻量级网络连接的替代方案 在远程办公和跨地域协作日益普遍的今天,安全稳定的网络连接成为刚需。虽然市场上有各种复杂的解决方案,但对于个人开发者和小型团队而言,往往需要的是快速部署、简单配置且资源占用低的连接方式。…...
