题目描述:
标签:数学 双指针 字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
代码:
思路分析:
以n为界限将字符串分为两部分,先将两部分分别翻转,最后再对整个字符串进行翻转。
class Solution {
public String reverseLeftWords(String s, int n) {
if(n >= s.length()){
return s;
}
char[] ch = s.toCharArray();
reverse(ch, 0, n - 1);
reverse(ch, n, ch.length - 1);
reverse(ch, 0, ch.length - 1);
return new String(ch);
}
public void reverse(char[] ch, int i, int j){
while(i < j){
swap(ch, i++, j--);
}
}
public void swap(char[] ch, int index1, int index2){
char tmp = ch[index1];
ch[index1] = ch[index2];
ch[index2] = tmp;
}
}