java 字符串反转

时间:2022-02-26 11:07:15

描述:给我一个字符串,例如I love java,输出: java love I

 

方法一

 1 public class StringReverse {
2
3 public void swap(char[] arr, int begin, int end) {
4 while(begin < end) {      
5 char temp = arr[begin];
6 arr[begin] = arr[end];
7 arr[end] = temp;
8 begin++;
9 end--;
10 }
11 }
12 //I love java
13 public String swapWords(String str) {
14 char[] arr = str.toCharArray();
15 swap(arr, 0, arr.length - 1);    //第一次反转,结果为avaj evol I
16 int begin = 0;
17 for (int i = 1; i < arr.length; i++) {
18 if (arr[i] == ' ') {       //第二次和三次反转,结果分别为java evol I和java love I
19 swap(arr, begin, i - 1);    
20 begin = i + 1;
21 }
22 }
23
24 return new String(arr);
25 }
26
27 public static void main(String[] args) {
28 String str = "I love java";
29 System.out.println(new StringReverse().swapWords(str));
30 }
31 }

方法二:(利用jdk提供的方法)

 1 public class fanzhuan {
2
3 public static void main(String[] args) {
4 String str = "I love java";
5 String[] sArr = str.split(" ");//I love java
6 List<String> list = new ArrayList<String>();
7 list = Arrays.asList(sArr);  //此时list为[I,love,java] 
8 Collections.reverse(list);      //reverse方法直接反转list的每个元素,反转后为[java,love,I]
9
10 for(String word:list){
11 System.out.print(word+" ");
12 }
13 }
14 }

另外,如果描述改一下,输入一个字符串,例如“abcd”,输出"dcba",

 

当然了方法很多,这里我提供一个jdk自带的方法,比较简单

 1 package sundemo2;
2
3 public class fanzhuan {
4 public static void main(String[] args){
5 String str = "my name is 周杰伦";
6 System.out.println(reverse(str));
7
8 }
9 public static String reverse(String str){
10 return new StringBuilder(str).reverse().toString();
11 }
12 }

 

 1 package sundemo2;
2
3 public class fanzhuan {
4 public static void main(String[] args){
5 String str = "my name is 周杰伦";
6
7 for(int i = str.length() - 1; i >= 0; i--){
8 System.out.print(str.charAt(i));
9 }
10 }
11 }