1 public class ReverseString { 2
3 /**
4 * 字符串指定逆置 5 * 6 * @param str 7 * 字符串 8 * @param start 9 * 開始下標 10 * @param end 11 * 結束下標 12 * @return chsr數組 13 */
14 public static char[] reverseString(String str, int start, int end) { 15 char[] array = str.toCharArray(); 16
17 for (int i = start; i < end / 2; i++) { 18 /* array[size - 1 - i]:下標為i值的對稱下標的值 */
19 array[i] = (char) (array[i] + array[end - 1 - i]); 20 /*
21 * array[size - 1 - i] = array[i] + array[size - 1 - i] -array[size 22 * - 1 - i] 23 */
24 /* 即:array[size - 1 - i] = array[i] 下標為i的值變為i的對稱下標的值 */
25 array[end - 1 - i] = (char) (array[i] - array[end - 1 - i]); 26 /* 同理 */
27 array[i] = (char) (array[i] - array[end - 1 - i]); 28 } 29 return array; 30 } 31
32 /**
33 * 字符串指定逆置(思路:首尾元素互換,一步一步網中間逼近) 34 * 35 * @param str 36 * 字符串 37 * @param start 38 * 開始下標 39 * @param end 40 * 結束下標 41 * @return chsr數組 42 */
43 public static char[] reverseString1(String str, int start, int end) { 44 char[] array = str.toCharArray(); 45 while (start <= end) { 46 char temp = array[start]; 47 array[start] = array[end]; 48 array[end] = temp; 49 end--; 50 start++; 51 } 52 return array; 53 } 54
55 public static void main(String[] args) { 56 String str = "abcdefgffyrhstesrt"; 57 System.out.println("轉置之前:" + str); 58 char[] array = ReverseString.reverseString(str, 0, str.length()); 59 System.out.print("轉置之后:"); 60 for (int i = 0; i < array.length; i++) { 61 System.out.print(array[i]); 62 } 63 char[] arr = ReverseString.reverseString1(str, 0, str.length()-1); 64 System.out.println(); 65 System.out.print("轉置之后:"); 66 for (int i = 0; i < arr.length; i++) { 67 System.out.print(arr[i]); 68 } 69 } 70
71 }
運行結果:
分析:法一理解起來困難一點,法二通俗易懂