首页 > 试题广场 >

左旋转字符串

[编程题]左旋转字符串
  • 热度指数:448648 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列  S ,请你把其循环左移 K 位后的序列输出。例如,字符序列 S = ”abcXYZdef” , 要求输出循环左移 3 位后的结果,即 “XYZdefabc”

数据范围:输入的字符串长度满足
进阶:空间复杂度 ,时间复杂度
示例1

输入

"abcXYZdef",3

输出

"XYZdefabc"
示例2

输入

"aab",10

输出

"aba"
头像 牛客题解官
发表于 2020-06-01 15:14:31
精华题解 题目的主要信息: 将给定字符串循环左移nnn位 即最左边的nnn位按照顺序整体接到右边末尾 举一反三: 学习完本题的思路你可以解决如下题目: JZ5. 替换空格 JZ73. 翻转单词序列 方法一:三次反转(推荐使用) 思路: 循环左移相当于从第nnn个位置开始,左右两部分视作整体翻转。即abcd 展开全文
头像 漫漫云天自翱翔
发表于 2021-06-20 13:26:24
精华题解 题解一:字符切分与拼接解题思路: 获取str[n:] 和 str[:n]子串,目标串target = str[:n] + str[n:];如样例:复杂度分析:时间复杂度: O(N),需要遍历把子串拷贝出新的内存空间空间复杂度: O(N),需要申请空间存储两段str子串的长度 class Soluti 展开全文
头像 鸠摩罗什
发表于 2021-06-20 16:46:50
精华题解 描述        汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列 S,请你把其循环左移 K 位后的序列输出(保证 K 小于等于 S 的长度 展开全文
头像 Maokt
发表于 2021-07-08 10:36:24
精华题解 算法思想一:遍历 解题思路: 将字符串 s 分为两个部分,分别对两部分循环遍历,形成左旋转字符串 1、判断特殊情况:字符串 s 为空字符,n > len(s),直接返回空字符 2、创建返回字符 res,循环遍历字符串 s 的【n,len(s)-1】,依次添加到res中 展开全文
头像 中工升达预备毕业生
发表于 2019-12-02 10:14:06
偷一下懒...越简单的题目越容易出错啊!(没想到n>str.length()的情况) public class Solution { public String LeftRotateString(String str, int n) { if (str == null 展开全文
头像 AndrewZhou924
发表于 2020-04-05 18:50:52
简单易懂的解法:把两个s拼起来,然后从第n%len(s)开始取出len(s)个元素,就可以了 class Solution: def LeftRotateString(self, s, n): # write code here if s == None or 展开全文
头像 郭家兴0624
发表于 2019-08-11 21:36:33
题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! 展开全文
头像 上二层楼
发表于 2019-07-26 11:46:00
class Solution { public:     //左旋字符串(循环左移字符串):左移串长length位后和原来一样,所以正真需要左移的是n % str.length()位     string LeftRotateString(string str 展开全文
头像 年少挽剑世无双·
发表于 2020-03-26 12:19:22
题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! 展开全文
头像 桐乐
发表于 2019-12-28 10:55:20
思路: 1.如果为空串啥返回空串。 2.考虑单个字符,如果左移字符串长度次数会回到原位,所以先把n%str.length简化问题。 3.把左边长度为n的字符串看做整体截取到原字符串的右边并拼接起来。 class Solution { public: string LeftR 展开全文
头像 Ironxin
发表于 2020-04-17 22:37:41
题目描述字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如输入字符串"abcdefg"和数字2,该函数将返回左旋转2位得到的结果"cdefgab"。   首先最直观的,我们肯定会想到使用库函数的拼接方法,来解决本题,但是,平心而论,如果在 展开全文
头像 Leno_B
发表于 2022-03-10 10:24:51
class Solution: def LeftRotateString(self , str: str, n: int) -> str: # 用一个指针记录,然后最后向右读取和向左读取字符串 if not str: 展开全文
头像 橙子爱吃桃子
发表于 2020-05-27 10:22:39
C++/一行代码解决: class Solution { public: string LeftRotateString(string str, int n) { return (n > str.size()) ? str : (str + str).substr(n, 展开全文
头像 YancyW
发表于 2020-08-13 15:12:00
笨办法完成,虽然不漂亮,但是思路清晰,容易理解。注释就不用了吧,直接代码就能看懂思路 class Solution { public: string LeftRotateString(string str, int n) { queue<char> q; 展开全文