在本文中,我们将讨论如何以10种不同的方式在Java中反转String。在本文中,我们将编写10个Java程序来反转String。例如,从“javaguides”到“sediugavaj”的反向字符串。

用Java反转字符串的10种方法

1.使用+(String Concatenation)运算符


包网。javaguides。corejava。串;


/**

*

*@authorRameshFadatare

*

*/

publicclassReverseWithStringConcat{

publicstaticvoidmain(String[]args){

ReverseWithStringConcatconcat=newReverseWithStringConcat();

concat。reverseWithStringConcat(“javaguides”);

}


privateStringreverseWithStringConcat(Stringinput){

Stringoutput=newString();

对于(诠释我=(输入。长度()-1);我>=0;我-){

输出+=(输入。的charAt(我));

}


显示(输入,输出);

返回输出;

}


privatevoiddisplay(Stringinput,Stringoutput){

系统。出。println(“inputstring::”+input);

系统。出。println(“outputstring::”+output);

}

}


产量

输入字符串::javaguides

输出字符串::sediugavaj


2.使用StringBuilder

包网。javaguides。corejava。串;


/**

*

*@authorRameshFadatare

*

*/

publicclassReverseWithStringBuilderBuiltinMethod{

publicstaticvoidmain(String[]args){

ReverseWithStringBuilderBuiltinMethodbuiltinMethod=newReverseWithStringBuilderBuiltinMethod();

builtinMethod。reverseWithStringBuilderBuiltinMethod(“javaguides”);

}


publicStringreverseWithStringBuilderBuiltinMethod(Stringstring){

finalStringBuilderbuilder=newStringBuilder(string);

显示(字符串,助洗剂。反向()。的toString());

返回建设者。反转()。toString();

}


privatevoiddisplay(Stringinput,Stringoutput){

系统。出。println(“inputstring::”+input);

系统。出。println(“outputstring::”+output);

}

}


产量

输入字符串::javaguides

输出字符串::sediugavaj


3.使用String charAt方法

包网。javaguides。corejava。串;


/**

*

*@authorRameshFadatare

*

*/

publicclassReverseWithStringChatAt{

publicstaticvoidmain(String[]args){

ReverseWithStringChatAtreverseWithStringBuilder=newReverseWithStringChatAt();

reverseWithStringBuilder。reverseWithStringBuilder(“javaguides”);

}


publicStringreverseWithStringChatAt(Stringstring){

finalStringBuilderbuilder=newStringBuilder();

对于(诠释我=(字符串。长度()-1);我>=0;我-){

建设者。追加(字符串。的charAt(我));

}

显示(字符串,助洗剂。的toString());

返回建设者。toString();

}


privatevoiddisplay(Stringinput,Stringoutput){

系统。出。println(“inputstring::”+input);

系统。出。println(“outputstring::”+output);

}

}


产量

输入字符串::javaguides

输出字符串::sediugavaj


4.使用交换字符反转字符串

包网。javaguides。corejava。串;


/**

*

*@authorRameshFadatare

*

*/

公共类ReverseStringWithSwaps{

publicstaticvoidmain(String[]args){

ReverseStringWithSwapsstringWithSwaps=newReverseStringWithSwaps();

stringWithSwaps。reverseWithSwaps(“javaguides”);

}


publicStringreverseWithSwaps(Stringstring){

finalchar[]array=string。toCharArray();

finalintlength=array。长度-1;

finalinthalf=(int)数学。地板(阵列。长度/2);


charc;

for(inti=length;i>=half;i-){

c=array[length-i];

array[length-i]=array[i];

array[i]=c;

}

显示(字符串,字符串。的valueOf(阵列));

returnString。valueOf(array);

}


privatevoiddisplay(Stringinput,Stringoutput){

系统。出。println(“inputstring::”+input);

系统。出。println(“outputstring::”+output);

}

}


产量

输入字符串::javaguides

输出字符串::sediugavaj


5.使用XOR(^)运算符反转字符串

包网。javaguides。corejava。串;


/**

*

*@authorRameshFadatare

*

*/

publicclassReverseStringWithXOR{

publicstaticvoidmain(String[]args){

ReverseStringWithXORstringWithXOR=newReverseStringWithXOR();

stringWithXOR。reverseWithXOR(“javaguides”);

}


publicStringreverseWithXOR(Stringstring){

finalchar[]array=string。toCharArray();

finalintlength=array。长度;

finalinthalf=(int)数学。地板(阵列。长度/2);


for(inti=0;i<half;i++){

array[i]^=array[length-i-1];

array[length-i-1]^=array[i];

array[i]^=array[length-i-1];

}

显示(字符串,字符串。的valueOf(阵列));

returnString。valueOf(array);

}


privatevoiddisplay(Stringinput,Stringoutput){

系统。出。println(“inputstring::”+input);

系统。出。println(“outputstring::”+output);

}

}


产量

输入字符串::javaguides

输出字符串::sediugavaj


6.使用Stack

包网。javaguides。corejava。串;


导入java。util。堆栈;


/**

*

*@authorRameshFadatare

*

*/

publicclassReverseStringUsingStack{

//使用堆栈和字符数组在Java中反转字符串的函数

publicstaticStringreverse(Stringstr){

//基本情况:如果string为null或为空

如果(STR==空||海峡。等号(“”))

返回str;


//创建一个空的字符堆栈

Stack<Character>stack=newStack<Character>();


//将给定字符串的每个字符都压入堆栈

char[]ch=str。toCharArray();

对于(诠释我=0;我<STR。长度();我++)

堆栈。推(ch[i]);


//从索引0开始

intk=0;


//从堆栈中弹出字符,直到它为空

而(!栈。的isEmpty()){

//将每个弹出的字符分配回字符数组

ch[k++]=堆栈。pop();

}


//将字符数组转换为字符串并返回它

returnString。copyValueOf(ch);

}


publicstaticvoidmain(String[]args){

Stringstr=“javaguides”;


str=reverse(str);//字符串是不可变的


系统。出。println(“给定字符串的反转是:”+str);

}

}


产量

反向的在给定的字符串是:sediugavaj


7.使用Collections reverse()方法

包网。javaguides。corejava。串;


导入java。util。ArrayList;

导入java。util。收藏;

导入java。util。清单;


/**

*

*@authorRameshFadatare

*

*/

publicclassReverseStringUsingCollectionsReverseMethod{


//使用Collections.reverse()在Java中反转字符串的函数

publicstaticStringreverse(Stringstr){

//基本情况:如果string为null或为空

如果(STR==空||海峡。等号(“”))

返回str;


//创建一个空字符列表

List<Character>list=newArrayList<Character>();


//将给定字符串的每个字符都推入其中

对于(炭Ç:STR。toCharArray())

清单。添加(c);


//使用java.util.Collections反向列表reverse()

收藏。反向(列表);


//使用StringBuilder将ArrayList转换为String并返回它

StringBuilder的建设者=新的StringBuilder(名单。大小());

for(字符c:列表)

建设者。追加(c);


返回建设者。toString();

}


publicstaticvoidmain(String[]args){

Stringstr=“JavaGuides”;


//String是不可变的

str=reverse(str);


系统。出。println(“给定字符串的反转是:”+str);

}

}


产量

反向的在给定的字符串是:sediuGavaJ


8.使用字节数组

包网。javaguides。corejava。串;


/**

*

*@authorRameshFadatare

*

*/

publicclassReverseStringUsingByteArray{

//使用字节数组在Java中反转字符串的函数

publicstaticStringreverse(Stringstr){

//如果string为null或为空则返回

如果(STR==空||海峡。等号(“”))

返回str;


//将字符串转换为字节

byte[]bytes=str。getBytes();


//从给定字符串的两个端点l和h开始

//并在循环的每次迭代中递增l和递减h

//直到两个终点相交(l>=h)

对(INT升=0,ħ=STR。长度()-1;升<ħ;升++,ħ-){

//在l和h处交换值

bytetemp=bytes[l];

bytes[l]=bytes[h];

bytes[h]=temp;

}


//将字节数组转换回字符串

returnnewString(bytes);

}


publicstaticvoidmain(String[]args){

Stringstr=“JavaGuides”;


//String是不可变的

str=reverse(str);


系统。出。println(“给定字符串的反转是:”+str);

}

}


产量

反向的在给定的字符串是:sediuGavaJ


9.使用substring()方法

包网。javaguides。corejava。串;


/**

*

*@authorRameshFadatare

*

*/

publicclassUsingSubStringFunction{

//使用递归在Java中反转字符串的函数

privatestaticStringreverse(Stringstr){

//基本情况:如果string为null或为空

如果(STR==空||海峡。等号(“”))

返回str;


//最后一个字符+递归剩下的字符串

返回str。的charAt(STR。长度()-1)+反向(STR。子串(0,STR。长度()-1));

}


publicstaticvoidmain(String[]args){

Stringstr=“javaguides”;


//字符串是不可变的

str=reverse(str);


系统。出。println(“给定字符串的反转是:”+str);

}

}


产量

反向的在给定的字符串是:sediugavaj


10.使用递归

包网。javaguides。corejava。串;


/**

*

*@authorRameshFadatare

*

*/

publicclassUsingRecursion{

staticinti=0;


//使用静态变量在Java中反转字符串的递归函数

privatestaticvoidreverse(char[]str,intk){

//如果我们到达了字符串的末尾

如果(ķ==STR。长度)

回归;


//递归下一个角色

反转(str,k+1);


if(i<=k){

chartemp=str[k];

str[k]=str[i];

str[i++]=temp;

}

}


publicstaticStringreverse(Stringstr){

//基本情况:如果string为null或为空

如果(STR==空||海峡。等号(“”))

返回str;


//将字符串转换为字符数组

char[]A=str。toCharArray();


//反向字符数组

反向(A,0);


//将字符数组转换为字符串

returnString。copyValueOf(A);

}


publicstaticvoidmain(String[]args){

Stringstr=“JavaGuides”;


//字符串是不可变的

str=reverse(str);


系统。出。println(“给定字符串的反转是:”+str);

}

}


产量

反向的在给定的字符串是:sediuGavaJ