文字列の反転方法の概要

4477 ワード

説明:I love javaなどの文字列をください.出力:java love I
方法1
[java] view plain copy print ?
public class StringReverse {  
  •       

  •     public void swap(char[] arr, int begin, int end) {  
  •         while(begin < end) {  

  •             char temp = arr[begin];  
  •             arr[begin] = arr[end];  

  •             arr[end] = temp;  
  •             begin++;  

  •             end--;  
  •         }  

  •     }  
  •     //I love java  

  •     public String swapWords(String str) {  
  •         char[] arr = str.toCharArray();  

  •         swap(arr, 0, arr.length - 1);  
  •         int begin = 0;  

  •         for (int i = 1; i < arr.length; i++) {  
  •             if (arr[i] == ' ') {  

  •                 swap(arr, begin, i - 1);  
  •                 begin = i + 1;  

  •             }  
  •         }  

  •   
  •         return new String(arr);  

  •     }  
  •       

  •     public static void main(String[] args) {  
  •         String str = "I love java";  

  •         System.out.println(new StringReverse().swapWords(str));  
  •     }  

  •   
  • }  
  • public class StringReverse {
    	
    	public void swap(char[] arr, int begin, int end) {
    		while(begin < end) {
    			char temp = arr[begin];
    			arr[begin] = arr[end];
    			arr[end] = temp;
    			begin++;
    			end--;
    		}
    	}
    	//I love java
    	public String swapWords(String str) {
    		char[] arr = str.toCharArray();
    		swap(arr, 0, arr.length - 1);
    		int begin = 0;
    		for (int i = 1; i < arr.length; i++) {
    			if (arr[i] == ' ') {
    				swap(arr, begin, i - 1);
    				begin = i + 1;
    			}
    		}
    
    		return new String(arr);
    	}
    	
    	public static void main(String[] args) {
    		String str = "I love java";
    		System.out.println(new StringReverse().swapWords(str));
    	}
    
    }

    方法2:(jdkが提供する方法を利用する)
    [java] view plain copy print ?
    public class Main {  
  •   

  •     public static void main(String[] args) {  
  •         Scanner sc = new Scanner(System.in);  

  •           
  •         String str = sc.nextLine();  

  •           
  •         String[] sArr = str.split(" ");//I love java  

  •           
  •         List list = new ArrayList();  

  •           
  •         list = Arrays.asList(sArr);  

  •           
  • //      for(int i=0;i
    //          list.add(sArr[i]);  
  • //      }  

  •           
  •         Collections.reverse(list);  

  •           
  •         for(String word:list){  

  •             System.out.print(word+" ");  
  •         }  

  •     }  
  • }  
  • public class Main {
    
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		
    		String str = sc.nextLine();
    		
    		String[] sArr = str.split(" ");//I love java
    		
    		List<String> list = new ArrayList<String>();
    		
    		list = Arrays.asList(sArr);
    		
    //		for(int i=0;i<sArr.length;i++){
    //			list.add(sArr[i]);
    //		}
    		
    		Collections.reverse(list);
    		
    		for(String word:list){
    			System.out.print(word+" ");
    		}
    	}
    }
    

    また、説明を変更すると、「abcd」などの文字列を入力し、「dcba」を出力します.
    もちろん方法はたくさんありますが、ここではjdkが持っている方法を提供します.比較的簡単です.
    [java] view plain copy print ?
    public static String reverse(String str){  
  •         return new StringBuilder(str).reverse().toString();  

  •     }  
    public static String reverse(String str){
    		return new StringBuilder(str).reverse().toString();
    	}

    [java] view plain copy print ?
    @Test  
  •     public void test09() {  

  •         String str = "hello";  
  •   

  •         for (int i = str.length() - 1; i >= 0; i--) {  
  •               

  •             char c = str.charAt(i);  
  •               

  •             System.out.print(c);  
  •         }  

  •     }  
    @Test
    	public void test09() {
    		String str = "hello";
    
    		for (int i = str.length() - 1; i >= 0; i--) {
    			
    			char c = str.charAt(i);
    			
    			System.out.print(c);
    		}
    	}