java实现对输⼊的⼀个字符串反转(9种⽅法)⽬录
1、StringBuilder转换(⾃带reverse⽅法)
⽅法⼀:将String装换为StringBuilder,利⽤JDK中StringBuilder⾃带的reverse()⽅法实现反转,再转回String。
import java.util.Scanner;
public class Main3{
Scanner sc=new Scanner(System.in);
String Line();
//  StringBuilder str2=new StringBuilder(str1);
// verse().toString();
String str2=new StringBuilder(str1).reverse().toString();
System.out.println(str2);
}
}
2、toCharArray⾃写swap⽅法转换
⽅法⼆:将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 ();
char [] CharArray();
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 ();
char[] CharArray();
//String.valueOf(swap(c1))
swap(c1);
System.out.println(c1);
}
}
3、ArrayList转换(verse)
⽅法三:将String转换为ArrayList,⽤verse() 实现反转,可采⽤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 Line();
String[] s=str1.split(""); //将⼀个字符串分割成各个字符,并存⼊到⼀个字符串数组中
List<String> l=new ArrayList <String>();
l=Arrays.asList(s);  //以列表形式存储
//法⼀:普通for循环,以下是遍历l
for(String j:l) {
System.out.print(j+"");
}
/* 遍历 s[i]也可以
for(int i=0;i<s.length;i++) {
System.out.print(s[i]+"");
}*/
System.out.println();
//法⼆:迭代器遍历
Iterator <String> iterator=l.iterator();
while(iterator.hasNext()) {
System.out.()); //有记录/值返回true,并把记录内容存⼊到对象
}
}
}
4、charAt转换
⽅法四:利⽤for循环和charAt倒序输出每个字符实现反转。
public class Main4 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String Line();
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 Line();
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;
}
}
5、异或转换
⽅法五:利⽤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 ();
char[] CharArray();
swap(c1);
System.out.println(c1);
}
}
6、堆栈转换
⽅法六:利⽤堆栈的push()和pop()实现反转。
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 =CharArray();
for(int i=0;i<str1.length();i++) {
st.push(c1[i]);  //字符Push⼊栈
}
int k=0;
while(!st.isEmpty()) {
c1[k++]=st.pop();
}
return String.valueOf(c1);
// pyValueOf(c1);也可以
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String ();
str1=reverse(str1);
System.out.println(str1);
}
}
7、 getBytes转换
⽅法七:利⽤Byte数组实现反转
import java.util.Scanner;
public class Main7 {
public static String reverse(String str1) {
if (str1 == null || str1.equals(""))
return str1;
byte[] Bytes();  //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=reverse(str1);
System.out.println(str1);
}
}
8、递推转换
java valueof⽅法⼋:利⽤charAt()、subString()⽅法和递推关系实现反转。
PS:递推是通过重复某⼀运算得到结果
public class Main9 {
public static String reverse(String str1) {
if (str1 == null || str1.equals(""))
return str1;
//递归取出字符串末尾的字符:3+substring(0,3)、2+substring(0,2)、1+substring(0,1)、0+substring(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=reverse(str1);
System.out.println(str1);
}
}
9、toCharArray的递归转换
⽅法九:利⽤递归关系实现反转(先写reverse的空⽅法,再重写reverse的⽅法调⽤该空⽅法)。PS:递归是程序调⽤⾃⾝
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 [] CharArray();
reverse(c1,0);  //调⽤以上的reverse(c1,k)⽅法
return String.valueOf(c1);
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String ();
str1=reverse(str1);
System.out.println(str1);
}
}
部分参考
加以整理

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。