题目:

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。

示例 1:

输入: s = "abcdefg", k = 2
输出: "cdefgab"
示例 2:

输入: s = "lrloseumgh", k = 6
输出: "umghlrlose"

限制:

1 <= k < s.length <= 10000

来源:力扣(LeetCode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

参考:代码随想录文字版讲解

拿例1举例:s = "abcdefg", k = 2 输出: "cdefgab"

①先翻转字符串s的前k个字符串,[0, k -1]

b a c d e f g

②再翻转后s.length-k个字符串,[k, s.length() - 1]

b a g f e d c

③最后翻转整个字符串,[0, s.length() - 1]

c d e f g a b

代码:

 1 class Solution {
2 public String reverseLeftWords(String s, int n) {
3 char[] ch = s.toCharArray();
4 reverse(ch, 0, n - 1);
5 reverse(ch, n, s.length() - 1);
6 reverse(ch, 0, s.length() - 1);
7 return new String(ch);
8 }
9 public void reverse(char[] ch, int start, int end){
10 while (start < end){
11 char temp = ch[end];
12 ch[end] = ch[start];
13 ch[start] = temp;
14 start++;
15 end--;
16 }
17 }
18 }

剑指 Offer 58 - II(Java)-左旋转字符串(简单)的更多相关文章

  1. 剑指Offer - 九度1362 - 左旋转字符串(Move!Move!!Move!!!)

    剑指Offer - 九度1362 - 左旋转字符串(Move!Move!!Move!!!)2013-11-23 03:05 题目描述: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任 ...

  2. 【剑指Offer】43、左旋转字符串

      题目描述:   汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S ...

  3. 剑指offer四十三之左旋转字符串

    一.题目 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”abc ...

  4. 剑指offer(43)左旋转字符串

    题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”abc ...

  5. 剑指 Offer 58 - II. 左旋转字符串 + 简单题

    剑指 Offer 58 - II. 左旋转字符串 Offer_58_2 题目描述 java代码 package com.walegarrett.offer; /** * @Author WaleGar ...

  6. 剑指 Offer 58 - II. 左旋转字符串

    本题 题目链接 题目描述 我的题解 方法一:使用库函数 s.substring() 代码如下 public String reverseLeftWords(String s, int n) { ret ...

  7. 剑指offer编程题Java实现——面试题8旋转数组的最小数字

    剑指offer面试题8:旋转数组的最小数字 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1, ...

  8. 剑指offer题解(Java版)

    剑指offer题解(Java版) 从尾到头打印链表 题目描述 输入一个链表,按从尾到头的顺序返回一个ArrayList. 方法1:用一个栈保存从头到尾访问链表的每个结点的值,然后按出栈顺序将各个值存入 ...

  9. 剑指 Offer 68 - II. 二叉树的最近公共祖先 + 最近公共祖先(LCA)

    剑指 Offer 68 - II. 二叉树的最近公共祖先 Offer_68_2 题目详情 题解分析 java代码 package com.walegarrett.offer; /** * @Autho ...

  10. 剑指 Offer 32 - II. 从上到下打印二叉树 II + 层次遍历二叉树 + 按层存储

    剑指 Offer 32 - II. 从上到下打印二叉树 II Offer_32 题目描述: 题解分析: 这道题我一开始想到的解决方法较粗暴,就是使用两个变量来记录当前层的节点数和下一层的结点数. 以上 ...

随机推荐

  1. vscode 快速切换窗口 快捷键 设置成 Alt + Q 了

    vscode 切换窗口 快捷键 设置成 Alt + Q 了 又换了 换成 快速切换窗口了 quickSwitchWindow 这样方便了 我再感受下一

  2. vscode 尾逗号不自动删除 'comma-dangle': 'off' eslint vue

    vscode 尾逗号不自动删除 'comma-dangle': 'off' eslint 外层环境说明 vscode eslint - .elintrs.js vue - vue开发 vetur - ...

  3. idea branch 分支比较 | git 查看分支命令 `git branch -vv`

    git 查看分支命令 git branch -vv

  4. Java的Class类,注解与反射

    Class对象: 我们每创建一个类,经过build都会生成对应的.class文件 该类无法只能由虚拟机创建对象,其构造函数为private 当我们创建某个类的对象,ClassLoader(一个类)就会 ...

  5. C++一些新的特性的理解

    一.智能指针 为什么需要智能指针? 智能指针主要解决一下问题: 内存泄漏:内存手动释放,使用智能指针可以自动释放 共享所有权的指针的传播和释放,比如多线程使用同一个对象时析构的问题. C++里面的四个 ...

  6. SQL之QL

    从中文语法上来说,应该先写FROM语句比较好理解 基础查询语句 SELECT [DISTINCT] target-list FROM tables WHERE qualification GROUP ...

  7. Android native项目编译v7a时-Werror参数导致报错

    在GitHub上下载了一个demo,自己编译运行时,v8a的so是可以正常编译运行的,但是就是v7a的不能也一直报错,最后发现在Android.mk文件里去掉-Werror字段就可以了.于是上网了解了 ...

  8. 使用JMeter从JSON响应的URL参数中提取特定值

    在使用Apache JMeter进行API测试时,我们经常需要从JSON格式的响应中提取特定字段的值.这可以通过使用JMeter内置的JSON提取器和正则表达式提取器来完成.以下是一个具体的例子,展示 ...

  9. .net 开源混淆器 ConfuserEx

    官网:http://yck1509.github.io/ConfuserEx/ 下载地址:https://github.com/yck1509/ConfuserEx/releases 使用参考:htt ...

  10. shk_to_bram

    Entity: shk_to_bram File: shk_to_bram.v Diagram Description Company: FpgaPublish Engineer: FP Create ...