Java反转字符串的10种方法
在这篇文章中,我们会讨论10种用Java反转字符串的方法,通过10个Java程序反转字符串。例如,把字符串“javaguides”反转为“sediugavaj”。
1.使用+(String连接)操作符
packagenet.javaguides.corejava.string;
/**
*
*@authorRameshFadatare
*
*/
publicclassReverseWithStringConcat{
publicstaticvoidmain(String[]args){
ReverseWithStringConcatconcat=newReverseWithStringConcat();
concat.reverseWithStringConcat("javaguides");
}
privateStringreverseWithStringConcat(Stringinput){
Stringoutput=newString();
for(inti=(input.length()-1);i>=0;i--){
output+=(input.charAt(i));
}
display(input,output);
returnoutput;
}
privatevoiddisplay(Stringinput,Stringoutput){
System.out.println("inputstring::"+input);
System.out.println("outputstring::"+output);
}
}
输出:
inputstring::javaguides outputstring::sediugavaj
2.使用StringBuilder
packagenet.javaguides.corejava.string;
/**
*
*@authorRameshFadatare
*
*/
publicclassReverseWithStringBuilderBuiltinMethod{
publicstaticvoidmain(String[]args){
ReverseWithStringBuilderBuiltinMethodbuiltinMethod=newReverseWithStringBuilderBuiltinMethod();
builtinMethod.reverseWithStringBuilderBuiltinMethod("javaguides");
}
publicStringreverseWithStringBuilderBuiltinMethod(Stringstring){
finalStringBuilderbuilder=newStringBuilder(string);
display(string,builder.reverse().toString());
returnbuilder.reverse().toString();
}
privatevoiddisplay(Stringinput,Stringoutput){
System.out.println("inputstring::"+input);
System.out.println("outputstring::"+output);
}
}
输出:
inputstring::javaguides outputstring::sediugavaj
3.使用StringcharAt方法
packagenet.javaguides.corejava.string;
/**
*
*@authorRameshFadatare
*
*/
publicclassReverseWithStringChatAt{
publicstaticvoidmain(String[]args){
ReverseWithStringChatAtreverseWithStringBuilder=newReverseWithStringChatAt();
reverseWithStringBuilder.reverseWithStringBuilder("javaguides");
}
publicStringreverseWithStringChatAt(Stringstring){
finalStringBuilderbuilder=newStringBuilder();
for(inti=(string.length()-1);i>=0;i--){
builder.append(string.charAt(i));
}
display(string,builder.toString());
returnbuilder.toString();
}
privatevoiddisplay(Stringinput,Stringoutput){
System.out.println("inputstring::"+input);
System.out.println("outputstring::"+output);
}
}
输出:
inputstring::javaguides outputstring::sediugavaj
4.通过交换字符反转
packagenet.javaguides.corejava.string;
/**
*
*@authorRameshFadatare
*
*/
publicclassReverseStringWithSwaps{
publicstaticvoidmain(String[]args){
ReverseStringWithSwapsstringWithSwaps=newReverseStringWithSwaps();
stringWithSwaps.reverseWithSwaps("javaguides");
}
publicStringreverseWithSwaps(Stringstring){
finalchar[]array=string.toCharArray();
finalintlength=array.length-1;
finalinthalf=(int)Math.floor(array.length/2);
charc;
for(inti=length;i>=half;i--){
c=array[length-i];
array[length-i]=array[i];
array[i]=c;
}
display(string,String.valueOf(array));
returnString.valueOf(array);
}
privatevoiddisplay(Stringinput,Stringoutput){
System.out.println("inputstring::"+input);
System.out.println("outputstring::"+output);
}
}
输出:
inputstring::javaguides outputstring::sediugavaj
5.使用XOR(^)操作符反转
packagenet.javaguides.corejava.string;
/**
*
*@authorRameshFadatare
*
*/
publicclassReverseStringWithXOR{
publicstaticvoidmain(String[]args){
ReverseStringWithXORstringWithXOR=newReverseStringWithXOR();
stringWithXOR.reverseWithXOR("javaguides");
}
publicStringreverseWithXOR(Stringstring){
finalchar[]array=string.toCharArray();
finalintlength=array.length;
finalinthalf=(int)Math.floor(array.length/2);
for(inti=0;i
输出:
inputstring::javaguides
outputstring::sediugavaj
6.使用堆栈
packagenet.javaguides.corejava.string;
importjava.util.Stack;
/**
*
*@authorRameshFadatare
*
*/
publicclassReverseStringUsingStack{
//FunctiontoreverseastringinJavausingastackandcharacterarray
publicstaticStringreverse(Stringstr){
//basecase:ifstringisnullorempty
if(str==null||str.equals(""))
returnstr;
//createanemptystackofcharacters
Stackstack=newStack();
//pusheverycharacterofthegivenstringintothestack
char[]ch=str.toCharArray();
for(inti=0;i
输出:
Reverseofthegivenstringis:sediugavaj
7.使用Collectionsreverse()方法
packagenet.javaguides.corejava.string;
importjava.util.ArrayList;
importjava.util.Collections;
importjava.util.List;
/**
*
*@authorRameshFadatare
*
*/
publicclassReverseStringUsingCollectionsReverseMethod{
//FunctiontoreverseastringinJavausingCollections.reverse()
publicstaticStringreverse(Stringstr){
//basecase:ifstringisnullorempty
if(str==null||str.equals(""))
returnstr;
//createanemptylistofcharacters
Listlist=newArrayList();
//pusheverycharacterofthegivenstringintoit
for(charc:str.toCharArray())
list.add(c);
//reverselistusingjava.util.Collectionsreverse()
Collections.reverse(list);
//covertArrayListintoStringusingStringBuilderandreturnit
StringBuilderbuilder=newStringBuilder(list.size());
for(Characterc:list)
builder.append(c);
returnbuilder.toString();
}
publicstaticvoidmain(String[]args){
Stringstr="JavaGuides";
//Stringisimmutable
str=reverse(str);
System.out.println("Reverseofthegivenstringis:"+str);
}
}
输出:
Reverseofthegivenstringis:sediuGavaJ
8.使用Byte数组
packagenet.javaguides.corejava.string;
/**
*
*@authorRameshFadatare
*
*/
publicclassReverseStringUsingByteArray{
//FunctiontoreverseastringinJavausingbytearray
publicstaticStringreverse(Stringstr){
//returnifstringisnullorempty
if(str==null||str.equals(""))
returnstr;
//convertstringintobytes
byte[]bytes=str.getBytes();
//startfromthetwoendpointslandhofthegivenstring
//andincrementl&decrementhateachiterationoftheloop
//untiltwoend-pointsintersect(l>=h)
for(intl=0,h=str.length()-1;l
输出:
Reverseofthegivenstringis:sediuGavaJ
9.使用substring()方法
packagenet.javaguides.corejava.string;
/**
*
*@authorRameshFadatare
*
*/
publicclassUsingSubStringFunction{
//FunctiontoreverseastringinJavausingrecursion
privatestaticStringreverse(Stringstr){
//basecase:ifstringisnullorempty
if(str==null||str.equals(""))
returnstr;
//lastcharacter+recurseforremainingstring
returnstr.charAt(str.length()-1)+reverse(str.substring(0,str.length()-1));
}
publicstaticvoidmain(String[]args){
Stringstr="javaguides";
//stringisimmutable
str=reverse(str);
System.out.println("Reverseofthegivenstringis:"+str);
}
}
输出:
Reverseofthegivenstringis:sediugavaj
10.使用递归
packagenet.javaguides.corejava.string;
/**
*
*@authorRameshFadatare
*
*/
publicclassUsingRecursion{
staticinti=0;
//RecursivefunctiontoreverseastringinJavausingstaticvariable
privatestaticvoidreverse(char[]str,intk){
//ifwehavereachedtheendofthestring
if(k==str.length)
return;
//recursefornextcharacter
reverse(str,k+1);
if(i<=k){
chartemp=str[k];
str[k]=str[i];
str[i++]=temp;
}
}
publicstaticStringreverse(Stringstr){
//basecase:ifstringisnullorempty
if(str==null||str.equals(""))
returnstr;
//convertstringintoacharacterarray
char[]A=str.toCharArray();
//reversecharacterarray
reverse(A,0);
//convertcharacterarrayintothestring
returnString.copyValueOf(A);
}
publicstaticvoidmain(String[]args){
Stringstr="JavaGuides";
//stringisimmutable
str=reverse(str);
System.out.println("Reverseofthegivenstringis:"+str);
}
}
输出:
Reverseofthegivenstringis:sediuGavaJ
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。