剑指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 }

 

posted @ 2019-09-17 09:59  chyblogs  阅读(102)  评论(0)    收藏  举报