每日一题 --- 右旋字符串[卡码][Go]

右旋字符串

题目:55. 右旋字符串(第八期模拟笔试) (kamacoder.com)

题目描述

字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。

例如,对于输入字符串 “abcdefg” 和整数 2,函数应该将其转换为 “fgabcde”。

输入描述

输入共包含两行,第一行为一个正整数 k,代表右旋转的位数。第二行为字符串 s,代表需要旋转的字符串。

输出描述

输出共一行,为进行了右旋转操作后的字符串。

输入示例
2
abcdefg
输出示例
fgabcde
提示信息

数据范围:
1 <= k < 10000,
1 <= s.length < 10000;

方法一:

先对字符数组进行扩容,然后利用双指针将前面的值付给后面,再在后面取多余的数赋值到前面。

package mainimport "fmt"func main() {var s stringvar k intfmt.Scan(&k)fmt.Scan(&s)fmt.Println(rightHandSideN(s,k))
}func rightHandSideN(s string, k int) string {bytes := []byte(s)Len := len(bytes)exPlace := k % LennewBytes := make([]byte, Len+exPlace)r := len(newBytes) - 1l := Len - 1for l >= 0 {newBytes[r] = bytes[l]r--l--}l = 0r = Lenfor exPlace != 0 {newBytes[l] = newBytes[r]l++r++exPlace--}return string(newBytes[:Len])
}

时间复杂度O(n),空间复杂度因为创建一个新字节数组所以为O(n)。

不用额外空间行不行呢,答案是可以的,就是反转再反转。

方法二:

利用反转,先将两个局部反转,在将整体反转。

package mainimport "fmt"func main() {var s stringvar k intfmt.Scan(&k)fmt.Scan(&s)fmt.Println(rightHandSideN(s,k))
}func rightHandSideN(s string, k int) string {bytes := []byte(s)Len := len(bytes)idx := Len - k%LenreverseRightHandSideN(bytes[:idx])reverseRightHandSideN(bytes[idx:])reverseRightHandSideN(bytes)return string(bytes)
}func reverseRightHandSideN(bytes []byte) {l, r := 0, len(bytes)-1for l < r {bytes[l], bytes[r] = bytes[r], bytes[l]l++r--}
}

当然你也可以先整体反转,再局部反转。快去试试吧。
在这里插入图片描述

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

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

相关文章

HarmonyOS 应用开发之同步任务开发指导 (TaskPool和Worker)

同步任务是指在多个线程之间协调执行的任务&#xff0c;其目的是确保多个任务按照一定的顺序和规则执行&#xff0c;例如使用锁来防止数据竞争。 同步任务的实现需要考虑多个线程之间的协作和同步&#xff0c;以确保数据的正确性和程序的正确执行。 由于TaskPool偏向于单个独…

scRNA+bulk+MR:动脉粥样硬化五个GEO数据集+GWAS,工作量十分到位

今天给大家分享一篇JCR一区&#xff0c;单细胞bulkMR的文章&#xff1a;An integrative analysis of single-cell and bulk transcriptome and bidirectional mendelian randomization analysis identified C1Q as a novel stimulated risk gene for Atherosclerosis 标题&…

MySQL 索引优化(一)

索引创建原则 先写代码&#xff0c;再建索引 不应该在创建完表之后立马就创建索引&#xff0c;等主体业务开发完毕以后&#xff0c;再把涉及到该表的 sql 分析过后再建立索引。联合索引尽量覆盖查询条件 在设计一个联合索引的时候&#xff0c;让联合索引尽可能的包含 sql 语句…

rtph264depay插件分析笔记

1、rtp协议头 2、rtp可以基于TCP或者UDP 其中基于TCP需要加4个字节的RTP标志 3、rtph264depay定义解析函数gst_rtp_h264_depay_process&#xff0c;通过RFC 3984文档实现。 static void gst_rtp_h264_depay_class_init (GstRtpH264DepayClass * klass) {GObjectClass *gobject…

AI资讯2024-04-02 | 前微软副总裁姜大昕携「阶跃星辰」入场,出手即万亿参数大模型!

关注文章底部公众号获取每日AI新闻,以及各种好玩的黑科技,如AI换脸,AI数字人,AI生成视频等工具 阶跃星辰发布万亿参数大模型 终于!国内大模型创业公司最后一位强实力玩家入场——阶跃星辰。它是由微软前全球副总裁姜大昕所创办,公司名称也来源于,发了三个大模型:Step-…

当msvcp120.dll文件找不到了要怎么解决?教你靠谱的3种修复msvcp120.dll方法

当出现msvcp120.dll文件丢失的问题时&#xff0c;不用担心&#xff0c;这是一个常见的情况。在日常使用电脑时&#xff0c;误删或受到计算机病毒影响都可能导致这个问题。为了解决这个问题&#xff0c;今天我们将向大家介绍正确的msvcp120.dll修复方法。 一.msvcp120.dll文件是…

体验OceanBase 的binlog service

OceanBase对MySQL具备很好的兼容性。目前&#xff0c;已经发布了开源版的binlog service工具&#xff0c;该工具能够将OceanBase特有的clog模式转换成binlog模式&#xff0c;以便下游工具如canal、flink cdc等使用。今天&#xff0c;我们就来简单体验一下这个binlog service的功…

RA8889/RA8876显示自定义ASCII字符方法

本文介绍用户自己生成的ASCII字库如何通过RA8889/RA8876显示到液晶屏上。 先上一张实例效果图&#xff1a; 再上程序代码&#xff1a; int main(void) {unsigned short x,y;/* System Clocks Configuration */RCC_Configuration(); delay_init(72); GPIO_Configuration(); …

转圈游戏(acwing)

题目描述&#xff1a; n 个小伙伴&#xff08;编号从 0 到 n−1&#xff09;围坐一圈玩游戏。 按照顺时针方向给 n 个位置编号&#xff0c;从 0 到 n−1。 最初&#xff0c;第 0 号小伙伴在第 0 号位置&#xff0c;第 1 号小伙伴在第 1 号位置&#xff0c;…

Redis面试题10道

1、什么是 Redis&#xff1f;简述它的优缺点&#xff1f; Redis 的全称是&#xff1a;Remote Dictionary.Server&#xff0c;本质上是一个 Key-Value 类型的内存数据库&#xff0c;很像 memcached&#xff0c;整个数据库统统加载在内存当中进行操作&#xff0c;定期通过异步操作…

前端学习<二>CSS基础——17-CSS3的常见边框汇总

CSS3 常见边框汇总 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><title>CSS3 边框</title><style>body, ul, li, dl, dt, dd, h1, h2, h3, h4, h5 {margin: 0;padding: 0;}​body {background-c…

治愈风景视频素材在哪找?日落风景、伤感风景、江南风景这里都有

在这个视频内容为王的时代&#xff0c;做个爆款视频好比烹饪一道米其林三星级大餐&#xff0c;少了那么一点儿神秘的调料&#xff0c;总觉得差了点味道。我&#xff0c;一个在视频剪辑战场上摸爬滚打多年的老兵&#xff0c;今天就来跟大家分享几个找素材的秘密武器&#xff0c;…

C++_Vector的学习

1.概述 1. vector 是表示可变大小数组的序列容器。 2. vector 采用的连续存储空间来存储元素&#xff0c;可以采用下标对 vector 的元素进行访问&#xff0c;它的大小是可以动态改变的&#xff0c;而且它的大小会被容器自动处理。 3. vector使用动态分配数组来存储它的元素。…

STM32应用开发——使用PWM+DMA驱动WS2812

STM32应用开发——使用PWMDMA驱动WS2812 目录 STM32应用开发——使用PWMDMA驱动WS2812前言1 硬件介绍1.1 WS2812介绍1.1.1 芯片简介1.1.2 引脚描述1.1.3 工作原理1.1.4 时序1.1.5 传输协议 1.2 电路设计 2 软件编程2.1 软件原理2.2 测试代码2.2.1 底层驱动2.2.2 灯效应用 2.3 运…

leetcode二叉树相关题目

目录 二叉树的建立整数数组转二叉树Object数组转二叉树 二叉树的遍历leetcode94.二叉树的中序遍历leetcode144.二叉树的前序遍历 二叉树的建立 整数数组转二叉树 下面只是一个简单的示例&#xff0c;没考虑某个子树为空的情况。把{1, 2, 3, 21, 22, 31, 32} 转变为一个二叉树…

新兴AI技术及其创业机会

量子计算与AI 量子计算是未来计算技术的前沿&#xff0c;它通过量子比特进行信息处理&#xff0c;相较于传统计算机&#xff0c;量子计算在处理复杂问题上有着天然的优势。将量子计算与AI结合&#xff0c;可以极大提升AI模型训练的效率和处理数据的能力。 创业机会&#xff1a…

基于NXP的ISELED开发环境搭建

目录 前言一、获取S32K SDK ISELED driver二、安装S32K SDK ISELED driverISELED文件说明三、ISELED工程介绍方案框图:图形化界面配置注意事项前言 NXP S32K ISELED 32位Arm Cortex-M微控制器 (MCU) 包括一种全新的通信协议 (ISELED),用于控制汽车和工业照明应用中的静态和动…

简述前端开发全景:从基础到未来的语言与趋势解析

前端开发概述 前端开发指的是创建网站或应用程序中用户可以直接看到和与之交互的部分。前端开发的主要目标是通过编写代码来制作用户界面&#xff0c;确保信息以易于理解和互动的方式展示给用户。 HTML和CSS HTML&#xff1a;HTML是构建网页的基础&#xff0c;负责定义网页的…

系统IO函数接口

目录 前言 一. man手册 1.1 man手册如何查询 1.2 man手册基础 二.系统IO函数接口 三.open打开文件夹 3.1 例1 open打开文件 3.2 open打开文件代码 3.3 例2 创建文件 四.write写文件 4.1 write写文件 五. read读文件 5.1 read读文件与偏移 5.2 偏移细节 5.3 read读文件代码 六.复…

3.5网安学习第三阶段第五周回顾(个人学习记录使用)

本周重点 ①SSRF服务器端请求伪造 ②序列化和反序列化 ③Vaudit代码审计 本周主要内容 ①SSRF服务器端请求伪造 一、概述 SSRF: server site request forgery (服务器端请求伪造)。 SSR: 服务端请求&#xff0c;A服务器通过函数向B服务器发送请求。 SSRF发生的前提条件…