剑指 Offer 58 - II. 左旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg
"和数字2,该函数将返回左旋转两位得到的结果"cdefgab
"。
示例 1:
输入: s = "abcdefg", k = 2
输出: "cdefgab"
示例 2:
输入: s = "lrloseumgh", k = 6
输出: "umghlrlose"
解法:
class Solution {
public String reverseLeftWords(String s, int n) {
return s.substring(n) + s.substring(0 ,n);
}
}
讲解:
在Java中,字符串类(String
)提供了 substring
方法用于截取子字符串。substring
方法可以接受一个或两个参数。
-
substring(int beginIndex)
:-
该方法接受一个参数
beginIndex
,表示要截取的子字符串的起始索引(包括)。 -
它返回从
beginIndex
到原始字符串末尾的子字符串。 -
例如:
String str = "Hello, World!";
String sub = str.substring(7);
// sub 的值为 “World!”
-
-
substring(int beginIndex, int endIndex)
:-
该方法接受两个参数
beginIndex
和endIndex
,表示要截取的子字符串的起始索引(包括)和结束索引(不包括)。 -
它返回从
beginIndex
到endIndex-1
的子字符串。 -
例如:
String str = "Hello, World!";
String sub = str.substring(7, 12);
// sub 的值为 “World”
-
需要注意的是,索引是从0开始的,所以起始索引 beginIndex
的值必须大于或等于0,并且小于字符串的长度。结束索引 endIndex
的值必须大于起始索引,并且不超过字符串的长度。
如果你提供的索引超出了有效范围,将会抛出 IndexOutOfBoundsException
异常。
例如,如果原始字符串长度为5,而你尝试调用 substring(2, 7)
,将会抛出异常。
另外值得注意的是,substring
方法会返回一个新的字符串,而不会修改原始字符串。因为字符串在Java中是不可变的。
希望这个解释对你有帮助!