欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2023-12-21 16:07:34
...

 方法一:利用JDK中StringBuilder自带的reverse()方法实现反转

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<end) {
			char t=a[begin];
			a[begin]=a[end];
			a[end]=t;
			begin++;
			end--;
		}
	}
	public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
		String str1=sc.next();
		char [] c1=str1.toCharArray();
	    swap(c1,0,c1.length-1);
	    System.out.println(c1);
	}
}

 

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<String> l=new ArrayList <String>();
		l=Arrays.asList(s);  //以列表形式存储
	    Collections.reverse(l);  //反转
/*	遍历 s[i]也可以
         for(int i=0;i<s.length;i++) {
	          System.out.print(s[i]+"");
	    }*/
	    //法一:普通for循环,以下是遍历l
	    for(String j:l) {
	    	System.out.print(j+"");
	    }
	    System.out.println();
	    //法二:迭代器遍历
	    Iterator <String> 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<half;i++) {  //注意是小于half,奇数时中间的字符不用异或
        	c1[i]^=c1[c1.length-i-1];
        	c1[c1.length-i-1]^=c1[i];
        	c1[i]^=c1[c1.length-i-1];
        }
		return;
}
	public static void main(String[] args) {
         Scanner sc=new Scanner(System.in);
		String str1=sc.next();
	    char[] c1=str1.toCharArray();
	    swap(c1);
		System.out.println(c1); 
	    }     
}

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

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<Character> st=new Stack<Character>();
        char [] c1 =str1.toCharArray();
        for(int i=0;i<str1.length();i++) {
        	st.push(c1[i]);
        }
        int k=0;
        while(!st.isEmpty()) {
        	c1[k++]=st.pop();
        }
        return String.valueOf(c1);
     // return String.copyValueOf(c1);也可以
    }
	public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
		String str1=sc.next();
	    str1=reverse(str1);
		System.out.println(str1); 
	    }     
}

 方法七:利用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<h;i++,h--) {
			byte temp=by[i];
			by[i]=by[h];
			by[h]=temp;
		}
		return new String(by);  //将字节数组转换为字符串并返回	
	}
	public static void main(String[] args) {
           Scanner sc=new Scanner(System.in);
			String str1=sc.next();
			str1=reverse(str1);
		    System.out.println(str1);
	    }     
}

 方法八:利用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 B_204 {
	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);
		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

加以整理

上一篇:

下一篇: