左旋转字符串
题目
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
示例 1:
输入: s = "abcdefg", k = 2
输出: "cdefgab"
示例 2:
输入: s = "lrloseumgh", k = 6
输出: "umghlrlose"
限制:
1 <= k < s.length <= 10000
Related Topics
数学
双指针
字符串
👍 410
👎 0
class Solution {
public String reverseLeftWords(String s, int n) {
}
}
思路
- 截取前n位
- 拼接到最后
实现
class Solution {
public String reverseLeftWords(String s, int n) {
StringBuilder sb = new StringBuilder();
StringBuilder sb1 = new StringBuilder();
for (int i=0;i<s.length();i++){
if (i<n){
sb1.append(s.charAt(i));
}
else {
sb.append(s.charAt(i));
}
}
sb.append(sb1);
return sb.toString();
}
}
结果
解答成功:
执行耗时:5 ms,击败了22.24% 的Java用户
内存消耗:42.2 MB,击败了34.79% 的Java用户
思路
- 直接用StringBuilder拼接、删除
优化1
class Solution {
public String reverseLeftWords(String s, int n) {
StringBuilder sb = new StringBuilder(s);
for (int i=0;i<n;i++){
sb.append(sb.charAt(0));
sb.delete(0,1);
}
return sb.toString();
}
}
结果
解答成功:
执行耗时:10 ms,击败了6.26% 的Java用户
内存消耗:42.3 MB,击败了25.81% 的Java用户
String 的方法
class Solution {
public String reverseLeftWords(String s, int n) {
return s.substring(n)+s.substring(0,n);
}
}
结果
解答成功:
执行耗时:0 ms,击败了100.00% 的Java用户
内存消耗:41.2 MB,击败了85.89% 的Java用户