一:递归
public static String test1(String str){
if (!TextUtils.isEmpty(str)){
int length= str.length()
String left=str.substring(0,length/2)
String right=str.substring(length/2,length)
return test1(right)+test1(left)
}else{
return str
}
}
二:拼接字符串
public static String test2(String str){
String reverse=""
for (int i=0
char ch=str.charAt(i)
reverse=ch+reverse
}
return reverse
}
三:使用数组,到序输出
public static String test3(String str){
char[] array= str.toCharArray()
String reverse=""
for (int i=array.length-1
reverse+=array[i]
}
return reverse
}
四:使用Stringbuffer内置reverse方法
public static String test4(String str){
return new StringBuffer(str).reverse().toString()
}
五:使用临时变量,交换两头数值
public static String test5(String str){
char[] s=str.toCharArray()
int n=s.length-1
for (int i=0
char temp=s[i]
s[i]=s[n-i]
s[n-i]=temp
}
return new String(s)
}
六:使用位移或操作,交换两头数据
public static String test6(String str){
char[] s= str.toCharArray()
int start=0
int end=str.length()-1
while (start<end){
s[start]=(char)(s[start]^s[end])
s[end]=(char)(s[start]^s[end])
s[start]=(char)(s[end]^s[start])
start++
end--
}
return new String(s)
}
七:使用栈反转字符串
public static String test7(String str){
char[] chars=str.toCharArray()
Stack<Character> stack=new Stack<>()
for (int i=0
stack.push(chars[i])
}
String reversed=""
for (int i=0
reversed+=stack.pop()
}
return reversed
}