输入
jack is a good boy
输出
boy good a is jack
StringBuffer 类有一个 reverse 可以直接完成反转。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = new String(sc.nextLine());
System.out.println(reverseStr(str));
}
public static String reverseStr(String str) {
char[] ch = str.toCharArray();
swap(ch, 0, ch.length - 1);
int blank = -1;
for (int i = 0; i < ch.length; i++) {
if (ch[i] == ' ') {
int nextBlank = i;
swap(ch, blank + 1, nextBlank - 1);
blank = nextBlank;
}
}
return (new String(ch));
}
public static void swap(char[] c, int start, int end) {
while (start < end) {
char temp = c[start];
c[start] = c[end];
c[end] = temp;
start++;
end--;
}
}
public static void main(String[] args) {
String str = "this is a test text.";
Stack<String> stack = new Stack<>();
for (String tmp: str.trim().split(" ")){
stack.push(tmp);
}
while (!stack.empty()){
System.out.print(stack.pop() + " ");
}
}
后进先出问题 一律采用栈
public static void main(String[] args) {
String data = "this is a test";
data = data.replaceAll(" +"," ").replace("[,|.]"," ");
String[] arr = data.split(" ");
for(int i = arr.length - 1;i >= 0;i--){
if(arr[i].equals(" "))continue;
System.out.print(arr[i] + " ");
}
System.out.println();
}
循环倒序遍历即可
for(int i = arr.length - 1;i >= 0;i--){
System.out.print(arr[i] + " ");
}
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
public class WordReverse {
public static void main(String[] arg){
String inStr = "jack is a good boy";
System.out.println(reverseWords(inStr));
}
public static String reverseWords(String str){
String[] as = str.split(" ");
List list = Arrays.stream(as).collect(Collectors.toList());
Collections.reverse(list);
return String.join(" ",list);
}
}