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; } }