import java.util.Scanner;
import java.util.Stack;
public class Demo {
public static void main(String[] args) {
System.out.print("Please input your string : ");
Scanner sc = new Scanner(System.in);
//迭代器
while (sc.hasNext()) { //hasNext()检查序列中是否有元素,有则返true。next()获得下一个元素,返回值:元素
String str = sc.nextLine(); //Enter键为结束符,返回Enter键前的所有字符(可得到带空格的字符串)。next()对输入有效字符前遇到Tab键、空格键、Enter键等,会被视为结束符
System.out.println("The reversing string is : " + reverse5(str)); //此处变换函数
}
}
//利用StringBuffer的内置reverse方法进行逆序排序
public static String reverse1(String str) {
return new StringBuffer(str).reverse().toString();
}
//从头部开始,正序:通过字符串数组实现从尾部开始esrever顺序逐个进入字符串reverse
public static String reverse2(String str) {
String reverse = "";
for (int i = 0; i < str.length(); i++) {
reverse = str.charAt(i) + reverse;
}
return reverse;
}
//从尾部开始,倒序
public static String reverse3(String str) {
char[] arr = str.toCharArray();//String 转换成char数组
String reverse = "";
for (int i = arr.length - 1; i >= 0; i--) {
reverse += arr[i];
}
return reverse;
}
//利用栈:First In Last Out
public static String reverse4(String str) {
StringBuffer sb = new StringBuffer();
Stack s = new Stack();//创建只装字符型的stack
for (int i = 0; i < str.length(); i++) {
s.add(str.charAt(i));
}
for (int i = 0; i < str.length(); i++) {
sb.append(s.pop());//出栈,StringBuffer.append()添加到sb的缓冲区末端;.insert(int index,添加的内容)添加到指定位置
}
return sb.toString();
}
//递归
public static String reverse5(String str){
int len=str.length();
if(len<=1)return str;
String left=str.substring(0,len/2);
String right=str.substring(len/2,len);
return reverse5(left)+reverse5(right);
}
}