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 }