方法一:将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
加以整理