字符串-左旋转字符串

        每日一题,提升自己。今天分享一道关于左旋转字符串的题目,且听我细细道来。

字符串 - 左旋转字符串

1. 题目描述

        字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。

示例:

示例1:

输入:s = “abcdefg”, k = 2

输出:”cdefgab”

示例2:

输入:s = “lrloseumgh”, k = 6

输出:”umghlrlose”

提示:

1 <= k < s.length <= 10000

2. 解题思路

        对于这种字符串旋转,最主要的还是遍历字符串再次拼接,本题是旋转指定长度的字符串,可以在原字符串从需要旋转的位置n开始向后遍历,并且保存到结果字符串中,然后再从原字符串的初始位置遍历到位置n,继续添加到结果字符串中。

复杂度:

  • 时间复杂度:O(n)。
  • 空间复杂度:O(n)。

3. 算法流程

  1. 初始化结果字符串sb,获取字符串长度len。
  2. 从下标n开始遍历,遍历到字符串s结尾,将区间[n,len]的字符添加到sb中。
  3. 从下标0开始遍历,遍历到下标n的位置,将区间[0,n]的字符添加到sb中。

4. 代码实现

Java代码实现如下:

1
2
3
4
5
6
7
8
9
10
11
12
public static String reverseLeftString(String str,int k){
StringBuilder sb = new StringBuilder();
for (int i=k;i<str.length();i++){
char c = str.charAt(i);
sb.append(c);
}
for (int i=0; i<k; i++){
char c = str.charAt(i);
sb.append(c);
}
return sb.toString();
}