首页 > 试题广场 >

句子反转

[编程题]句子反转
  • 热度指数:64190 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello”

输入描述:
输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)


输出描述:
对于每个测试示例,要求输出句子中单词反转后形成的句子
示例1

输入

hello xiao mi

输出

mi xiao hello
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);

String s = scanner.nextLine();
String[] ss = s.split(" ");

for (int i = ss.length-1; i>=0; i--) {
System.out.print(ss[i]);
if (i!=0){
System.out.print(" ");
}
}
}
}

编辑于 2019-09-04 15:46:23 回复(0)
//直接把输入流按空格拆分,然后倒着打印就可以了,注意一下最后一次输出没空格
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        if(in.hasNext()){
            String input = in.nextLine();
            String[] list = input.split(" ");
            for(int i = list.length - 1; i > 0; i --){
                System.out.print(list[i] + " ");
            }
            System.out.print(list[0]);
        }
    }
}
发表于 2019-01-05 23:25:23 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
        String[] str = sc.nextLine().split(" ");
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = str.length; i > 0; i--) {
            stringBuilder.append(str[i-1]+" ");
        }
        System.out.println(stringBuilder.toString().trim());
    }
}
发表于 2018-12-18 15:03:42 回复(0)
先将字符串按空格拆分成字符串数组
String 中的 spilt() 方法
再用个字符串倒叙输出就可以了
import java.util.*;
public class Main{
    public static void main(String [] args){
        Scanner sc=new Scanner(System.in);
        String str=sc.nextLine();
        printIt(str);
    }
   
    public static void printIt(String s){
        String []st=s.split(" ");
        String s1="";
        for(int i=st.length-1;i>=0;i--){
            s1=s1+st[i]+" ";
        }
        System.out.println(s1.trim());
    }
    
}

发表于 2018-10-17 18:56:58 回复(0)
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()){
            String str = scanner.nextLine();
            String[] strs = str.split(" ");
            for (int i = strs.length-1; i >= 0; i--) {
                System.out.print(strs[i]);
                if(i != 0){
                    System.out.print(" ");
                }
            }
        }
    }
}

编辑于 2018-10-22 19:51:21 回复(2)
importjava.util.Scanner;  public class Main{public static void main(String args[]){
        Scanner sc=newScanner(System.in);  String s=sc.nextLine();  String[] arr=s.split(" ");  int min=0;  int max=arr.length-1;  while(min<max){
            String temp=arr[min];  arr[min]=arr[max];  arr[max]=temp;  min++;  max--;  } for(inti=0;i<arr.length;i++){ if(i<arr.length-1){
                System.out.print(arr[i]+" ");  }else{
                System.out.print(arr[i]);  }

        }
    }
}


发表于 2018-09-21 20:07:32 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        char[] ch = str.toCharArray();
        int start = 0;
        int end = ch.length-1;
        Main rs = new Main();
        rs.reverse(ch,start,end);
        start = end = 0;
        while(start < ch.length){
            if(ch[start] == ' '){
                start++;
                end++;
            }else if(end >= ch.length || ch[end] == ' '){
                rs.reverse(ch,start,end-1);
                start = end+1;
                end = end + 1;
            }else {
                end++;
            }
        }
        System.out.println(String.valueOf(ch));
    }
    public void reverse(char[] ch,int start,int end){
        while(start < end){
            char temp = ch[start];
            ch[start] = ch[end];
            ch[end] = temp;
            end--;
            start++;
        }
    }
}


发表于 2018-08-24 21:27:55 回复(0)
import java.util.Scanner;  public class Main{ public static void main(String[] args)  {
        Scanner  sc = new Scanner(System.in);  while(sc.hasNext()) {
            String s = sc.nextLine();  String result = reverse(s);  System.out.println(result);  }} public static String reverse(String str){
        StringBuffer sb = new StringBuffer();  if(-1==str.indexOf(" ")){ return sb.append(str).toString();  } else{
            String[] st = str.split(" ");  for(int i=0;ilength/2;i++){
                String temp = st[i];  st[i] = st[st.length-1-i];  st[st.length-1-i] = temp;  } for(int i=0;ilength;i++){ if(0==sb.length()){
                    sb.append(st[i]);  }else{
                    sb.append(" "+st[i]);  }
            }
        } return sb.toString();  }
}
发表于 2018-08-03 00:42:01 回复(0)
import java.util.Scanner; public class demo01 { public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String str;
        String [] str1; while (sc.hasNext()){
          str=sc.nextLine();
          str1=str.split(" "); for(int i=str1.length-1;i>=0;i--){ if(i!=0){
            System.out.print(str1[i]+" ");
            }else {
                System.out.print(str1[i]);
            }
        }}
    }
}

发表于 2018-07-29 16:23:09 回复(0)
import java.util.Scanner;
public class Main{
    public static void main(String [] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            String str=sc.nextLine();
            char [] arr=str.toCharArray();
            reverse(arr,0,arr.length-1);
            int left=-1,right=0;
            for(int i=0;i<arr.length;i++){
                if(arr[i]==' '){
                    right=i;
                    reverse(arr,left+1,right-1);
                    left=right;
                }
            }
            reverse(arr,left+1,arr.length-1);
            System.out.println(String.valueOf(arr));
        }
    }
    public static void reverse(char [] nums,int i,int j){
        char temp;
        while(i<j){
            temp=nums[i];
            nums[i]=nums[j];
            nums[j]=temp;
            i++;
            j--;
        }
    }
}

发表于 2018-07-16 15:33:45 回复(0)

import java.util.Scanner;

public class Main {
public static void main(String[] args) {

    Scanner scanner = new Scanner(System.in);

    while (scanner.hasNextLine()) {

        String str = scanner.nextLine();
        String[] strings = str.split(" ");

        for (int i = strings.length - 1; i >= 0; i--) {
            if (i == 0) {
                System.out.print(strings[i]);
            } else {
                System.out.print(strings[i] + " ");
            }
        }
        System.out.println();
    }
}

}

发表于 2018-06-24 19:27:13 回复(0)

import java.util.Scanner;

public class Main{

    
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String s=sc.nextLine();
        int num=s.length();
        for (int i = s.length()-1; i >=0; i--) {
            if(s.charAt(i)==' ') {
                System.out.print(s.substring(i+1, num)+" ");
                num=i;
            }if(i==0) {
                System.out.println(s.substring(0,num));
            }
        }
    }
}

发表于 2018-06-08 10:44:22 回复(0)
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            String test = sc.nextLine();
            String[] strs = test.split(" ");
            StringBuilder sb = new StringBuilder();
            for (int i = strs.length-1;i>=0;i--){
                if (i==0){
                    sb.append(strs[i]);
                }else{
                    sb.append(strs[i]+" ");
                }
            }
            System.out.println(sb.toString());
            return;
        }
    }
}
发表于 2018-06-04 20:26:26 回复(0)
import java.util.Scanner;

public class juzifanzhuan {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner sc=new Scanner(System.in);
    String s=sc.nextLine();
    String[] ss=s.split(" ");
    for(int i=ss.length-1;i>=1;i--) {
        System.out.print(ss[i]+" ");
    }
    System.out.print(ss[0]);
} 


}
发表于 2018-05-16 12:21:40 回复(0)
算法菜鸟前来报道
import java.util.*;

public class Main{
    public static void main(String []args){
        int i;
        Scanner in=new Scanner(System.in);
        String str=in.nextLine();
        String[] dataStr=str.split(" ");
        for(i=dataStr.length-1;i>0;i--){
        System.out.print(dataStr[i]+" ");
        }
        System.out.print(dataStr[i]);
    }
}
发表于 2018-05-06 11:15:53 回复(0)
import java.util.Stack;
import java.util.Scanner;
public class Main{
    public static void main(String []args){
        Stack<String> st = new Stack<String>();
        Scanner s = new Scanner(System.in);
        while(s.hasNext())st.add(s.next());
        boolean first=true;
        while(st.isEmpty()!=true){
            if(first==false)System.out.print(" ");
            else first=false;
            System.out.print(st.pop());
        }
        System.out.println();
    }
}

发表于 2018-05-03 12:12:58 回复(0)
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        String[] string = new Scanner(System.in).nextLine().split(" ");
        for (int i = string.length-1; i > 0; i--) {
            System.out.print(string[i] + " ");
        }
        System.out.print(string[0]);
    }
}

发表于 2018-04-26 10:03:01 回复(0)

测试对比了以下使用ArrayList和Stack数据结构的性能

  1. 使用ArrayList

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.io.IOException;
    import java.util.Collections;
    public class Main{
    public static void main(String[] args) throws IOException{
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
     String str  = null;
     while((str = br.readLine() ) != null){
         String[] arr = str.split(" ");
         ArrayList list = new ArrayList();
         for(String item:arr){list.add(item);}
         Collections.reverse(list);
         for(int i =  0;i < list.size();i ++){
             if(i == list.size() - 1 )
                 System.out.print(list.get( i ));
             else
                 System.out.print(list.get(i)+" ");
         }
     }
    
    }
    
    }
    
  2. 使用Stack

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.io.IOException;
import java.util.Collections;
import java.util.Stack;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
while((str = br.readLine() ) != null){
String[] arr = str.split(" ");
Stack stack = new Stack();
for(int i = 0;i < arr.length ;i++){
if(i == arr.length - 1){
stack.push(arr[i]);
}else{
stack.push(arr[i]);
stack.push(" ");
}
}
while(!stack.isEmpty()){
System.out.print(stack.pop());

}

}

}

}

时间:14ms
空间:8564k

真是十分明显的时间换取空间

编辑于 2018-04-21 15:32:23 回复(0)