给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)
eg:对于字符串"abcdefg"
offset=0 =>"abcdefg"
offset=1 =>"gabcdef"
offset=2 =>"fgabcde"
offset=3 =>"efgabcd"
思路:仔细分析可以发现,就是把从0~n-offset-1这一段反转,将n-offset~n-1这一段反转,再整体反转。
class solution{ public void rotateString(char[] str, int offset) { if(str==null||str.length==0) return; int n=str.length; offset%=n; reverse (str,0,n-offset-1); reverse (str,n-offset,n-1); reverse (str,0,n-1); } public void reverse(char[] ch ,int start,int end){ while(start<end){ char temp=ch[start]; ch[start]=ch[end]; ch[end]=temp; start++; end--; } } }