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 }

运行结果:

  

分析:法一理解起来困难一点,法二通俗易懂

 

posted on 2017-04-13 22:41  呵呵静  阅读(4190)  评论(0编辑  收藏  举报