java实现对输入的一个字符串反转(9种方法)

 方法一:将String装换为StringBuilder,利用JDK中StringBuilder自带的reverse()方法实现反转,再转回String

import java.util.Scanner;
public class Main3{
       Scanner sc=new Scanner(System.in);
		String str1=sc.nextLine();
      //   StringBuilder str2=new StringBuilder(str1);
	//	str2.reverse().toString();   
		String str2=new StringBuilder(str1).reverse().toString();  
		System.out.println(str2);
	}
}

方法二:将String利用toCharArray转换为字符数组,交换字符反转(注意边界条件)

import java.util.Scanner;
public class Main1 {
	public static void swap(char []a,int begin,int end) {
		while(begin

 

import java.util.Scanner;
public class Main1 {
           public static void swap(char []c1) {
        char c;
        int half=(int)Math.floor(c1.length/2); //奇数个字符时,中间的字符不交换位置,则向下取整
        for(int i=c1.length-1;i>=half;i--) {  //注意是大于等于half
        	c=c1[c1.length-i-1];
        	c1[c1.length-i-1]=c1[i];
        	c1[i]=c;
        }
		return;
}
   public static void main(String[] args) {
         Scanner sc=new Scanner(System.in);
		String str1=sc.next();
	    char[] c1=str1.toCharArray();
	    //String.valueOf(swap(c1))
	    swap(c1);
		System.out.println(c1);  
	    }
}

方法三:将String转换为ArrayList,用Collections.reverse()实现反转,有2种遍历方法

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Main2 {
     public static void main(String[] args) {
              Scanner sc=new Scanner(System.in);
		String str1=sc.nextLine();
		String[] s=str1.split(""); //将一个字符串分割成各个字符,并存入到一个字符串数组中
		List l=new ArrayList ();
		l=Arrays.asList(s);  //以列表形式存储
	    Collections.reverse(l);  //反转
/*	遍历 s[i]也可以
         for(int i=0;i iterator=l.iterator();
	    while(iterator.hasNext()) {
	    	System.out.print(iterator.next()); //有记录/值返回true,并把记录内容存入到对象
	    }
	}
}

 

 方法四:利用for循环和charAt倒序输出每个字符实现反转

import java.util.Scanner;
public class Main4 {
	public static void main(String[] args) {
           Scanner sc=new Scanner(System.in);
		String str1=sc.nextLine();
		reverse(str1);
	}
	 public static void reverse( String str) { 
	        for (int i = str.length() - 1; i >= 0; i--) {      
	            char c = str.charAt(i);  //定义一个字符    
	            System.out.print(c);  //将每个字符输出
	        }		
	    } 
}
import java.util.Scanner;
public class Main4 {
	public static void main(String[] args) {
          Scanner sc=new Scanner(System.in);
		  String str1=sc.nextLine();
		  System.out.println(reverse(str1));
	}
	 public static String reverse( String str) { 
		    String c = new String();  //定义一个空的字符串,不能用null(会输出null)
            //用String c = "";也可以
	        for (int i = str.length() - 1; i >= 0; i--) {       
	            c+=str.charAt(i);
	        }	
	        return c;	 
	    } 
}

 方法五:利用XOR(^)操作符实现反转(注意边界条件)

import java.util.Scanner;
public class Main5 {
    public static void swap(char []c1) {
        int half=(int)Math.floor(c1.length/2); 
        for(int i=0;i

 方法六:利用堆栈实现反转

import java.util.Scanner;
import java.util.Stack;
public class Main6 {
    public static String reverse(String str1) {
        if(str1==null||str1.equals("")) {
        	return str1;
        }
        Stack st=new Stack();
        char [] c1 =str1.toCharArray();
        for(int i=0;i

 方法七:利用Byte数组实现反转

import java.util.Scanner;
public class Main7 {
	public static String reverse(String str1) {
		if (str1 == null || str1.equals(""))
            return str1;
		byte[] by=str1.getBytes();  //getBytes():将一个字符串转化为一个字节数组byte[]的方法
		for(int i=0,h=str1.length()-1;i

 方法八:利用subString()方法和递推关系实现反转

import java.util.Scanner;
public class Main9 {
	public static String reverse(String str1) {
		if (str1 == null || str1.equals(""))
            return str1;
		//3+(0,1)、2+(0,2)、1+(0,1)、0+(0,0)
		return str1.charAt(str1.length()-1)+reverse(str1.substring(0, str1.length()-1));
	}
	public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
			String str1=sc.next();
			str1=reverse(str1);
		    System.out.println(str1);
	    }     
}

方法九:利用递归关系实现反转(先写reverse的空方法,再重写reverse的方法调用该空方法) 

import java.util.Scanner;
public class Main10 {
	static int i=0;    //i要定义在reverse外面
	public static void reverse(char []c1,int k) {
		if(k==c1.length)   
			return;
		reverse(c1,k+1);
		if(i<=k) {  //i>k的话又反转成原来的数组
			 char temp = c1[k];
	         c1[k] = c1[i];
	         c1[i++] = temp;  //reverse的i可以不断变化
		}
	}
	public static String reverse(String str1) {
		if (str1 == null || str1.equals(""))
            return str1;
		char [] c1=str1.toCharArray();
		reverse(c1,0);   //调用以上的reverse(c1,k)方法
		return String.valueOf(c1);
	}
    public static void main(String[] args) {
             Scanner sc=new Scanner(System.in);
			String str1=sc.next();
			str1=reverse(str1);
		    System.out.println(str1);
	    }     
}

递归的参考了别人写的。。

部分参考

https://www.cnblogs.com/Claire6649/p/6235916.html

http://www.importnew.com/30579.html

加以整理

你可能感兴趣的:(java实现对输入的一个字符串反转(9种方法))