剑指offer_左旋转字符串
题目描述
Input: S="abcXYZdef" K=3 Output: "XYZdefabc"
方法一:
直接用substring
1 public class Solution { 2 public String LeftRotateString(String str,int n) { 3 if(str.length()==0||str==null) return str; 4 return str.substring(n)+str.substring(0,n); 5 } 6 }
方法二:
先将 "abc" 和 "XYZdef" 分别翻转,得到 "cbafedZYX",然后再把整个字符串翻转得到 "XYZdefabc"。
1 public class Solution { 2 public String LeftRotateString(String str,int n) { 3 if(n>=str.length()) return str; 4 char ch[] = str.toCharArray(); 5 reserve(ch,0,n-1); 6 reserve(ch,n,str.length()-1); 7 reserve(ch,0,str.length()-1); 8 return new String(ch); 9 } 10 11 public void reserve(char ch[],int i,int j){ 12 while(i<j){ 13 swap(ch,i,j); 14 i++;j--; 15 } 16 } 17 18 public void swap(char ch[],int i,int j){ 19 char temp = ch[i]; 20 ch[i] = ch[j]; 21 ch[j] =temp; 22 } 23 }

浙公网安备 33010602011771号