题目描述
将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I
输入描述:
每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100
输出描述:
依次输出倒置之后的字符串,以空格分割
示例1
输入:
I like beijing.
输出:
beijing. like I
解题思路1
先将整个字符串逆置过来,再遍历字符串,找出每个单词,对单词逆置。
实现代码
import java.util.*;
public class Main{
public static void reverse(char[] array,int start,int end){
while(start < end){
char tmp = array[start];
array[start]=array[end];
array[end]=tmp;
start++;
end--;
}
}
public static void main(String[] args){
Scanner scan =new Scanner(System.in);
String s = scan.nextLine();
char[] ch = s.toCharArray();
int len = ch.length;
//1、整体进行了逆置
reverse(ch,0,len-1);
int i =0;//遍历ch数组
while(i<len){
int j=i;
while(j<len&&ch[j]!=' '){
j++;
}
if(j<len){
reverse(ch,i,j-1);
i=j+1;
}else{
reverse(ch,i,j-1);
i=j;
}
}
String str =new String(ch);
System.out.println(str);
}
}
解题思路2
先创建字符串str,用str.split方法用空格分成str2数组,在从后往前遍历一下str2数组,最后数组元素用空格输出
实现代码
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
String str = s.nextLine();
String[] str2 = str.split(" ");
for(int i = str2.length-1;i>0;i--){
System.out.print(str2[i]+" ");
}
System.out.print(str2[0]);
}
}