【问题描述】[中等]

【解答思路】

1. 字符串切片

应用字符串切片函数,可方便实现左旋转字符串。
时间复杂度:O(N) 空间复杂度:O(N)

 public String reverseLeftWords(String s, int n) {return s.substring(n, s.length()) + s.substring(0, n);}
2. 列表遍历拼接



时间复杂度:O(N) 空间复杂度:O(N)

public String reverseLeftWords(String s, int n) {StringBuilder res = new StringBuilder();for(int i = n; i < s.length(); i++)res.append(s.charAt(i));for(int i = 0; i < n; i++)res.append(s.charAt(i));return res.toString();}//求余运算 优化 public String reverseLeftWords(String s, int n) {StringBuilder res = new StringBuilder();for(int i = n; i < n + s.length(); i++)res.append(s.charAt(i % s.length()));return res.toString();}
3. 字符串遍历拼接



时间复杂度:O(N) 空间复杂度:O(N)

  public String reverseLeftWords(String s, int n) {String res = "";for(int i = n; i < s.length(); i++)res += s.charAt(i);for(int i = 0; i < n; i++)res += s.charAt(i);return res;}//取余运算优化public String reverseLeftWords(String s, int n) {String res = "";for(int i = n; i < s.length(); i++)res += s.charAt(i);for(int i = 0; i < n; i++)res += s.charAt(i);return res;}//求余运算 优化

【总结】

1.效率分析


2.字符串拼接

使用‘+’进行字符串拼接时,Java实际上是通过new出一个StringBuilder对象,然后进行append操作,最后通过toString方法返回String对象完成的,会造成内存资源的额外浪费。

所以如果在循环体中,字符串的连接方式,推荐使用StringBuilder的append方法进行扩展,而不要使用‘+’。

不是在循环体中的话,可以使用‘+’,代码更加简洁和可读,如方法一的代码。

3.字符串拼接题目速度 切割函数>列表(StringBuilder) >字符串(String)

转载链接:https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/solution/mian-shi-ti-58-ii-zuo-xuan-zhuan-zi-fu-chuan-qie-p/

[剑指offer]面试题第[58-2]题[JAVA][左旋转字符串][拼接]相关推荐

  1. 剑指offer面试题[42]-反转单词顺序VS左旋转字符串

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

  2. 剑指offer面试题6 重建二叉树(java)

    注:(1)java中树的构建 (2)构建子树时可以直接利用Arrays.copyOfRange(preorder, from, to),这个方法是左开右闭的 1 package com.xsf.Sor ...

  3. [剑指offer]面试题第[58]题[Leetcode][JAVA][第151题][翻转单词][字符串常用函数总结]

    [问题描述] 给定一个字符串,逐个翻转字符串中的每个单词.示例 1: 输入: "the sky is blue" 输出: "blue is sky the" [ ...

  4. 【剑指offer-Java版】42翻转单词顺序VS左旋转字符串

    反转单词顺序以及左旋转字符串:输入一个英文句子,翻转句子中的单词顺序,单词内部的字母顺序是不变的 – I am a student. -> student. am I 第一步,翻转句子中的所有字 ...

  5. 剑指offer——面试题58:二叉树的下一个结点

    剑指offer--面试题58:二叉树的下一个结点 这个题要认真分析一下... Solution1: 自己想出来的破算法 /* struct TreeLinkNode {int val;struct T ...

  6. 【剑指Offer面试题】 九度OJ1510:替换空格

    c/c++ 中的字符串以"\0"作为结尾符.这样每一个字符串都有一个额外字符的开销. 以下代码将造成内存越界. char str[10]; strcpy(str, "01 ...

  7. 剑指offer 面试题三 找出数组中重复的数字

    1 import org.junit.Test; 2 3 import java.util.Arrays; 4 import java.util.HashSet; 5 6 public class D ...

  8. [剑指offer]面试题第[68-2]题[Leetcode][第236题][JAVA][二叉搜索树的最近公共祖先][递归]

    [问题描述][中等] 235/68-1 搜索二叉树 236/68-2 二叉树 [解答思路] 递归 时间复杂度:O(N) 空间复杂度:O(N) 情况 1. , 2. , 3. , 4. 的展开写法如下. ...

  9. [剑指offer]面试题第[57]题[Leetcode][第167题][JAVA][和为s的两个数字][两数之和][HashSet][二分][双指针]

    [剑指offer]面试题第[57]题[Leetcode][第167题][第1题] 有序无序之分 题目输出不同之分 以下解法按照[剑指offer]面试题第[57]题进行题解 [问题描述][简单] 输入一 ...

最新文章

  1. android 写字体投影,android之字体阴影效果
  2. OpenCL异构扩展
  3. 不良言论屏蔽方案探讨——自说自话方案
  4. LeetCode Algorithm 204. 计数质数
  5. java判断题_【Java判断题】请大神们进来看下、这些判断题你都知道多少~
  6. 【Tensorflow】Tensorflow中的卷积函数(conv2d、slim.conv2d、depthwise_conv2d、conv2d_transpose)
  7. python三维数组表示方法_Python操作多维数组和矩阵
  8. Microsoft Word 段前距设置和页眉设置
  9. 【Oracle】ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
  10. 如果输入的dll名字被改后应该手工删除dll
  11. 问题五十九:怎么求一元六次方程在区间内的所有不相等的实根(2)
  12. 深度学习笔记_搭建一个简单网络(完整版)_手写数字识别MNIST
  13. android怎么操作才会出现anr_博客笔记大汇总,Android优化总结篇
  14. 接口测试搭建之JMeter接口测试与SoapUI接口测试
  15. canvas双层复合饼图及点击效果的实现
  16. Spring注入Bean的几种方法
  17. SpringBoot2尚硅谷笔记
  18. RTMP协议和RTSP协议的区别
  19. 支付宝SDK官方下载地址
  20. 学生HTML个人网页作业作品----(画家企业8页)

热门文章

  1. 博客园的博客终于开通了
  2. Xcode8更新约束
  3. Windows7+VS2012下OpenGL 4的环境配置
  4. Bootstrap系列 -- 23. 图片
  5. app.config数据库路径问题
  6. Alibaba 开源工具 Arthas 使用
  7. Invalid options object. Copy Plugin has been initialized using an options object that does not match
  8. outerDocument访问外部属性方法
  9. 开发项目之考研计划_软件测试之项目测试计划模板
  10. 线程通信的经典问题:生产者消费者问题