zoukankan      html  css  js  c++  java
  • java 字符串反转

    描述:给我一个字符串,例如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 }
  • 相关阅读:
    2018 徐州网络赛A
    2018 徐州网络赛 G
    Split The Tree(dfs序+树状数组)
    A Question of Ingestion(Dp)
    Starting a Scenic Railroad Service(前缀和+差分)
    Rendezvous on a Tetrahedron (模拟)
    7032: Knightsbridge Rises(网络流+dfs)
    7033: Lounge Lizards(lis)
    并发服务器
    fork和exec函数
  • 原文地址:https://www.cnblogs.com/xiaoluosun/p/4253266.html
Copyright © 2011-2022 走看看