描述:给我一个字符串,例如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 }