题目描述:
给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。如:hello world->world hello
输入描述:
输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)
输出描述:
对于每个测试示例,要求输出句子中单词反转后形成的句子JAVACODE:
1.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Juzifanzhuan {
public static void main(String[]args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String inputString = br.readLine();
//字符分割
String[] textChar = inputString.split(" ");
//字符分割后,倒序输出
for(int i=textChar.length-1;i>=0;i--){
if(i == 0){
System.out.print(textChar[i]);
}else{
System.out.print(textChar[i]+" ");
}
}
}
}
2.import java.util.Scanner;
public class Juzifanzhuan1 {
/**
*1.先将整个字符串转成字符数组反转得到
*2.遍历这个字符数组,遇到空格或者到了尾部再做局部反转
*/
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
char[] arr = s.toCharArray();
for (int i=0; i<arr.length/2; i++) { // 整体反转
char temp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
}
int start = 0, end = 0;
for (int i=0; i<arr.length; i++) { // 局部反转
if (arr[i]==' ' || i+1==arr.length) {
if (arr[i]==' ')
end = i-1;
else if (i+1==arr.length)
end = i;
for (int j=start; j<(start+end+1)/2; j++) {
char temp = arr[j];
arr[j] = arr[start+end-j];
arr[start+end-j] = temp;
}
start = i + 1;
}
}
System.out.println(new String(arr));
}
}
3.import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Juzifanzhuan2 {
public static void main(String[]args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String inputString = br.readLine();
String [] str = inputString.split(" ");
Stack<String> stack = new Stack<>();
for(String string:str){
stack.add(string);
}
StringBuilder sb = new StringBuilder(" ");
while(!stack.isEmpty()){
sb.append(" "+stack.pop());
}
System.out.println(sb.toString().trim());
br.close();
}
}