public class StringReverse {
public static void main(String[] args) {
System.out.println(reverse1("123qwe"));
System.out.println(reverse2("123qwe"));
System.out.println(reverse3("123qwe"));
System.out.println(reverse3("123qwer"));
System.out.println(reverse4("123qwe"));
}
//下标逆序 正向拼接(一般情况都是在原字符串后面追加当前字符)实现反转
public static String reverse1(String string) {
String s="";
if(string==null||string.length()==0) return string;
for(int i=string.length()-1;i>-1;i--) {
s=s+string.charAt(i);
}
return s;
}
//下标正序 逆向拼接(在原字符串的前面追加当前字符)实现反转 上面方法的逆向思维
public static String reverse2(String string) {
String s="";
if(string==null||string.length()==0) return string;
for (int i = 0; i < string.length(); i++) {
s=string.charAt(i)+s;
}
return s;
}
//首尾两端相互交换实现反转,遍历到中点时就完成全部反转
public static String reverse3(String string) {
char c;
char[] str=string.toCharArray();
if(string==null||string.length()<2) return string;
for (int i = 0; i < string.length()>>1; i++) {
c=string.charAt(i);
str[i]=string.charAt(string.length()-1-i);
str[string.length()-1-i]=c;
}
return new String(str);
}
//使用递归实现反转
public static String reverse4(String string) {
if(string==null||string.length()<2) return string;
return reverse4(string.substring(1))+string.charAt(0);
}
//利用栈的后进先出的特性,进栈出栈便实现了反转
public static String reverse5(String string){
if (string == null || string.length() < 2)return string;
Stack<Character> stringStack = new Stack<>();
char [] array = string.toCharArray();
for(Character c:array){
stringStack.push(c);
}
int length = string.length();
for(int i= 0;i<length;i++){
array[i] = stringStack.pop();
}
return new String(array);
}
}
结果:
ewq321
ewq321
ewq321
rewq321
ewq321