题目描述

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

解题思路

  • 以"abcdefg"为例,我们可以把它分为两部分。
  • 由于想把它的前两个字符移到后面,我们就把前两个字符分到第一部分,把后面的所有字符都分到第二部分。
  • 我们先分别翻转这两部分,于是就得到"bagfedc"。接下来我们再翻转整个字符串,得到的"cdefgab"刚好就是把原始字符串左旋转2位的结果。
算法图解

参考代码:
package offer;/*** 左旋转字符串   abcdefg 2 ----->cdefgab*/
public class Offer58_2 {public static void main(String[] args) {String string = "abcdefg";int index = 2;  // 后置前两个字符StringBuilder temp = new StringBuilder(string);StringBuffer stringBuffer=new StringBuffer();String reverse = String.valueOf(temp.reverse());String headString = reverse.substring(0, string.length() - index);stringBuffer.append(new StringBuilder(headString).reverse());String endString = reverse.substring(string.length() - index, string.length());stringBuffer.append(new StringBuilder(endString).reverse());System.out.printf(stringBuffer+"");}
}

附录

该题源码在我的 ?Github 上面!

[剑指Offer]-左旋转字符串相关推荐

  1. 代码随想录算法训练营第八天|344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.翻转字符串里的单词 剑指Offer58-II.左旋转字符串

    一.344.反转字符串 题目:编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的 ...

  2. 备战sp23春招 day8 | 344.反转字符串 541. 反转字符串II 剑指 05.替换空格 151.翻转字符串里的单词 剑指58-II.左旋转字符串

    344 反转字符串 class Solution {public:void reverseString(vector<char>& s) {int n = s.size();int ...

  3. 402-字符串(题目:剑指Offer58-II.左旋转字符串、 28. 实现 strStr()、459.重复的子字符串)

    题目:剑指Offer58-II.左旋转字符串 class Solution {public:string reverseLeftWords(string s, int n) {string s1(s. ...

  4. 代码随想录算法训练营第08天 | LeetCode 344.反转字符串,541. 反转字符串2,剑指Offer 05.替换空格,151.翻转字符串里的单词,剑指Offer58-II.左旋转字符串

    LeetCode [344. 反转字符串] 题目:编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 s 的形式给出. 不要给另外的数组分配额外的空间,你必须**原地修改输入数组**. ...

  5. 代码随想录算法训练营第八天|● 344.反转字符串● 541. 反转字符串II● 剑指Offer 05.替换空格● 151.翻转字符串里的单词● 剑指Offer58-II.左旋转字符

    一.344.反转字符串 力扣 思路:很简单的一个for循环双指针,left和right交换. class Solution {public void reverseString(char[] s) { ...

  6. 剑指 Offer 11. 旋转数组的最小数字 简单

    剑指 Offer 11. 旋转数组的最小数字 题目 解题思路 方法(一)直接遍历法 方法(二)二分查找法 题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组 ...

  7. 【LeetCode】剑指 Offer 11. 旋转数组的最小数字

    [LeetCode]剑指 Offer 11. 旋转数组的最小数字 文章目录 [LeetCode]剑指 Offer 11. 旋转数组的最小数字 一.遍历 二.二分法 总结 一.遍历 算法步骤: 遍历数组 ...

  8. 《LeetCode力扣练习》剑指 Offer 11. 旋转数组的最小数字 Java

    <LeetCode力扣练习>剑指 Offer 11. 旋转数组的最小数字 Java 一.资源 题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 给你一个可能存在 ...

  9. 剑指offer 11. 旋转数组的最小数字(很详细!)

    剑指offer 11. 旋转数组的最小数字 题目 解题思路 代码 题目 解题思路 一开始,我们就能直接想到,数组找最小值,那么不轻轻松松直接遍历一遍,用一个变量记录最小值,然后直接返回不就完事了? 但 ...

最新文章

  1. pygame加载MP3音乐
  2. scala学习之数组操作
  3. 怎么查看服务器是多少位系统,查看服务器是多少位的
  4. HP5200打印机从控制面板手动配置TCP/IP 参数
  5. android 开机小企鹅_手机root是好是坏 小编来帮你分析
  6. Spring WS Consume Soap Service From WSDL
  7. oracle,sqlserver,mysql区别
  8. PHP两个匿名函数传递性,PHP让人不知道的匿名函数的几种写法(附代码)
  9. android gdbserver
  10. 数据结构和算法(C语言版)期末速成基础不挂科补考
  11. 度数计算机在线使用,度数换算(度数换算计算器)
  12. Zabbix 监控ESXi服务器【非虚拟机】CPU、内存、硬盘、网络带宽
  13. 前端:标准删除确认提示
  14. vivado ooc综合
  15. html新年礼物,特别的新年礼物 特殊的新年礼物
  16. 光场相机重聚焦之二——Lytro Illum记录光场
  17. 斯坦福大学(吴恩达) 机器学习课后习题详解 第一周 线性代数
  18. Hadoop-IPC模型
  19. 环境综合传感监控系统、智慧城市、智慧工地、情报分析系统、探针人流、预警系统、监控列表、mac人库、气象监测、探针分析、渣土受纳、扬尘、噪声、建筑工地、图像证据库、图像记录、地图监视、行为预测、行为轨迹
  20. SpringCloudStream——RabbitMQ 手动ACK,Channel 参数为空?

热门文章

  1. python三消小游戏
  2. 半导体存储芯片及译码驱动方式
  3. 如何谈一个项目的报价
  4. 福特二维码互动创意:平面不平
  5. python遗传算法排课表_遗传算法与Python图解
  6. 11款电脑必装的神级软件,个个功能性拉满
  7. 垂直搜索引擎深度分析
  8. loadrunner文件保存
  9. java获取鼠标在屏幕位置的颜色RGB值
  10. 北邮计算机系最新消息,北邮、中央财大、贸大的这几类专业不输清华、北大!毕业工资高!...