Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >LintCode 旋转字符串题目分析代码

LintCode 旋转字符串题目分析代码

作者头像
desperate633
发布于 2018-08-22 02:38:32
发布于 2018-08-22 02:38:32
45400
代码可运行
举报
文章被收录于专栏:desperate633desperate633
运行总次数:0
代码可运行

题目

给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)

样例 对于字符串 "abcdefg". offset=0 => "abcdefg" offset=1 => "gabcdef" offset=2 => "fgabcde" offset=3 => "efgabcd"

分析

旋转字符串在原地旋转,利用了一个技巧,旋转三次可以达到效果,具体看代码分析即可。这种旋转的技巧需要熟练掌握

代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Solution {
    /**
     * @param str: an array of char
     * @param offset: an integer
     * @return: nothing
     */
    public void rotateString(char[] str, int offset) {
        // write your code here
        if (str == null || str.length == 0)
            return;
            
        offset = offset % str.length;
        reverse(str, 0, str.length - offset - 1);
        reverse(str, str.length - offset, str.length - 1);
        reverse(str, 0, str.length - 1);
    }
    
    private void reverse(char[] str, int start, int end) {
        for (int i = start, j = end; i < j; i++, j--) {
            char temp = str[i];
            str[i] = str[j];
            str[j] = temp;
        }
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016.12.14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
LintCode-8.旋转字符串
乍一看的思路是建立新的数组往里面填,空间复杂度O(n),时间复杂度O(1)。看了一下“挑战“是空间复杂度O(1),那么就是循环咯(没百度,可能有更6的办法)。
悠扬前奏
2019/05/28
4870
左旋转字符串
先将 “abc” 和 “XYZdef” 分别翻转,得到 “cbafedZYX”,然后再把整个字符串翻转得到 “XYZdefabc”。
MickyInvQ
2021/12/07
1240
每日一刷《剑指offer》字符串篇之左旋转字符串
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列  S ,请你把其循环左移 K 位后的序列输出。例如,字符序列 S = ”abcXYZdef” , 要求输出循环左移 3 位后的结果,即 “XYZdefabc”
终有救赎
2023/11/18
1570
每日一刷《剑指offer》字符串篇之左旋转字符串
字符串旋转、fizzbuzz、落单的数、翻转整数
这道题比较简单,可以简单粗暴的直接截断重新拼接即可,但是题目要求使用O(1)的额外空间。
呼延十
2019/07/01
5970
剑指Offer面试题:34.翻转单词顺序VS左旋转字符串
  第一步翻转句子中所有的字符。比如翻转"I am a student."中所有的字符得到".tneduts a ma I",此时不但翻转了句子中单词的顺序,连单词内的字符顺序也被翻转了。
Edison Zhou
2018/08/20
2560
剑指Offer面试题:34.翻转单词顺序VS左旋转字符串
【Python】基础:入门示例
问题描述:将一个三位整数反转并输出。如输入123,输出321;输入900,输出9。
DevFrank
2024/07/24
1270
【Python】基础:入门示例
C语言——oj刷题——字符串左旋和轮转数组
实现: 当我们谈到字符串左旋时,我们指的是将字符串中的字符向左移动一定数量的位置。这个问题在编程中非常常见,特别是在字符串处理和算法实现中。
GG Bond1
2024/06/14
790
C语言——oj刷题——字符串左旋和轮转数组
继续反转字符串
https://leetcode-cn.com/problems/reverse-string-ii/
代码随想录
2021/07/16
6370
LintCode 乱序字符串题目分析代码
给出一个字符串数组S,找到其中所有的乱序字符串(Anagram)。如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中。
desperate633
2018/08/22
3840
【剑指Offer】58.2 左旋转字符串
先将 “abc” 和 “XYZdef” 分别翻转,得到 “cbafedZYX”,然后再把整个字符串翻转得到 “XYZdefabc”。
瑞新
2020/12/07
3720
剑指 Offer 58 - II. 左旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
五分钟学算法
2021/08/27
3650
剑指 Offer 58 - II. 左旋转字符串
C语言每日一题(2)字符串左旋
首先基于最简单的思路,将需要左旋变动的值取出,然后将剩下的字符进行平移,最后再将刚拿出来的值接到后面去。
对编程一片赤诚的小吴
2024/01/23
1500
字符串优化处理
原文:https://www.relaxheart.cn/to/master/blog?uuid=87 String对象及特点 String对象时Java语言中重要的数据类型,但它并不是Java的基本
七七分享
2019/05/19
7140
力扣(LeetCode)初级算法--旋转数组
旋转数组 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
程序员小涛
2020/12/03
2500
LeetCode字符串高频题目整理(持续更新中)
  给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
嵌入式与Linux那些事
2021/05/20
1.3K0
每天一道剑指offer-左旋转字符串
,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。 剑指offer思路,先反转整个字符串,就是fedZYXcba,然后反转前6位XYZdef再反转后三位abc。那么就是XYZdefabc。
乔戈里
2019/01/23
3470
Leetcode 344:Reverse String 反转字符串(python、java)
Write a function that reverses a string. The input string is given as an array of characters char[].
爱写bug
2019/06/30
7830
​LeetCode刷题实战186:翻转字符串里的单词 II
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
程序员小猿
2021/03/04
3670
旋转数组
尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。要求使用空间复杂度为 O(1) 的 原地 算法。
木瓜煲鸡脚
2020/09/23
4180
旋转数组
每天一道leetcode151-反转字符串里的单词
输入: "the sky is blue", 输出: "blue is sky the". 说明:
乔戈里
2019/09/17
6430
每天一道leetcode151-反转字符串里的单词
相关推荐
LintCode-8.旋转字符串
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验