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     }

 

你可能感兴趣的:(java练习 - 字符串反转)