java练习 - 字符串反转

思路:

1. 首先将字符串转换成数组,一个数组元素放一个字符。

2. 循环遍历字符串,将所有字符串前后字符调换位置,比如:第一个和最后一个调换,第二个和倒数第三调换,第三个和倒数第三调换,直到所有字符调换完毕。

3. 通过以上两步得到了字符顺序完全颠倒的新字符串。

下面是代码实现:可以将1 2 3 4 5 转换成5 4 3 2 1

 1 public class reverse {
 2 
 3 //public static void main(String[] args) 
 4     public String swap(String str){
 5 //String str = "1 2 3 4 5";
 6     char[] arr = str.toCharArray();
 7 int begin=0; int end=arr.length-1;
 8         while(begin < end) {
 9             char temp = arr[begin];
10             arr[begin] = arr[end];
11             arr[end] = temp;
12             begin++;
13             end--;
14             }
15 
16       //for (int i = 0; i < arr.length-1; i++)
17      // System.out.println(arr[i]);
18                 return new String(arr).toString();
19     }
20 public static void main(String[] args) {
21         String str = "a b c d";
22         System.out.println(new reverse().swap(str));
23     }
24     }

虽然上面的方法可以实现字符串翻转,如果我们想把How are you翻转成you are How呢?上面的方法只能转换为 uoy era woH

其实办法很简单,

以空格为分隔符,将空格之间的字符再次翻转就可以了。

 

 1 public class reverse {
 2 
 3 //public static void main(String[] args) 
 4     public void swap(char[] arr,int begin,int end){
 5 //String str = "1 2 3 4 5";
 6         while(begin < end) {
 7             char temp = arr[begin];
 8             arr[begin] = arr[end];
 9             arr[end] = temp;
10             begin++;
11             end--;
12             }
13 
14       //for (int i = 0; i < arr.length-1; i++)
15      // System.out.println(arr[i]);
16     //            return new String(arr).toString();
17 
18     }
19     
20     public String revWord(String str){
21     char[] arr = str.toCharArray();
22     swap(arr,0,arr.length-1);
23     int begin=0;
24     for (int i=0;i<arr.length;i++)
25     {if (arr[i]==' ')
26     {swap (arr,begin,i-1); begin=i+1;}
27     } return new String(arr);
28     }
29 public static void main(String[] args) {
30         String str = "how are you";
31         System.out.println(new reverse().revWord(str));
32     }
33     }

 

posted @ 2016-03-11 21:56  测试人生-  阅读(521)  评论(0编辑  收藏  举报