1. question: 左旋转字符串(简单)
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串”abcdefg”和数字2,该函数将返回左旋转两位得到的结果”cdefgab”。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof
示例 1:
1 2
| 输入: s = "abcdefg", k = 2 输出: "cdefgab"
|
示例 2:
1 2
| 输入: s = "lrloseumgh", k = 6 输出: "umghlrlose"
|
限制:
1
| 1 <= k < s.length <= 10000
|
2. answers
这道题没什么可说的,先做一下,代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| public class Solution_0041 {
public static String reverseLeftWords(String s, int n) {
char[] chars = s.toCharArray();
StringBuilder sb = new StringBuilder();
for (int i = n; i < chars.length; i++) { sb.append(chars[i]); }
for (int i = 0; i < n; i++) { sb.append(chars[i]); }
return sb.toString(); }
public static void main(String[] args) { System.out.println();
String s = "lrloseumgh";
System.out.println(reverseLeftWords(s, 6)); } }
|
参考其他博客,可以试着用反转字符串来做,先反转前部分,再反转后部分,最后将整体再反转一下(不得不说,这个方法真经典!!!)。代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| public class Solution_0041_02 {
public static void reverse(char[] chars, int start, int end) {
char temp; while(start < end) {
temp = chars[start]; chars[start] = chars[end]; chars[end] = temp;
start += 1; end -= 1; } }
public static String reverseLeftWords(String s, int n) {
char[] chars = s.toCharArray();
reverse(chars, 0, n-1);
reverse(chars, n, chars.length - 1);
reverse(chars, 0, chars.length - 1);
return String.valueOf(chars);
}
public static void main(String[] args) {
String s = "lrloseumgh";
s = reverseLeftWords(s, 6); System.out.println(s); } }
|
3. 备注
参考力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 (leetcode-cn.com),代码随想录 (programmercarl.com)。