面试题58 - II. 左旋转字符串(简单)

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

示例 1:

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

示例 2:

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

限制:

1 <= k < s.length <= 10000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof

思路:

逆转前n个字符,再逆转后面的,最后将整体逆转,就实现了整体左旋

代码1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public String reverseLeftWords(String s, int n) {

//左旋,方法就是反转前两个,反转后几个,再反转全部
char[] cs = s.toCharArray();
reverse(cs,0,n-1);
reverse(cs,n,cs.length-1);
reverse(cs,0,cs.length-1);
return String.valueOf(cs);
}
private void reverse(char[] ca,int i,int j){
while(i<j){
char x =ca[i];
ca[i] = ca[j];
ca[j] = x;
i++;
j--;
}
}
}