1. 程式人生 > >8、反轉字串

8、反轉字串

Example

Given "abcdefg".

offset=0 => "abcdefg"
offset=1 => "gabcdef"
offset=2 => "fgabcde"
offset=3 => "efgabcd"

第一種方法:

新建一個數組,將字串按照格式要求一次放進去即可 但是這個方法消耗的額外的空間比較大

public class eight {

    public static void main(String[] args) {         // TODO Auto-generated method stub         int n =13;         char[] ch = {'a','b','c','d','e','f','g'};         System.out.println(RotateString(3,ch));

    }     public static  char[] RotateString(int n,char[] str)     {                  int len = str.length;         char[] ch = new char[len];         int i = 0;         n %= len;         for(int j = len-n;j<len;j++)         {             System.out.println(str[j]);             ch[i]= str[j];             i++;         }         for(int  j =0;j<len-n;j++)         {             ch[i]= str[j];             i++;         }         return ch;     }

}

第二種方法 

三次反轉法

public static  char[] RotateString(int offset,char[] str)     {         int len = str.length;         offset %=len;         reverse(str,0,len-offset-1);//第一次將要放到陣列最前面的反轉         reverse(str,len-offset,len-1);//第二次將剩餘的反轉         reverse(str,0,len-1);//將整個陣列反轉  其實這一步的反轉放到最前面作為第一次反轉也是一樣的         return str;     }     public static void reverse(char[] str, int start,int end)     {         int i  = start;         int j = end;         for (;i<j;i++,j--)         {             char tmp = str[i];             str[i] = str[j];             str[j] = tmp;         }     }