题目描述:
链接:
牛客
将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I
输入描述:
每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100
输出描述:
依次输出倒置之后的字符串,以空格分割
示例1
输入
I like beijing.
输出
beijing. like I
解题思路:
1.将字符串转为字符数组并整体倒置数组;
2.遇到ch[i]== ’ '就倒置初始位置(start)到 i-1位置;
3.退出循环后有可能最后一个空格之后的字符有多个,则在进行一次倒置;
代码如下:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String str = sc.nextLine();
char[] ch = str.toCharArray();
reverse(ch,0,ch.length-1);
int start = 0;
for(int i = 0; i < ch.length; i++){
if(ch[i] == ' '){
reverse(ch,start,i-1);
start = i+1;
}
}
reverse(ch,start,ch.length-1);
System.out.println(new String(ch));
}
}
public static void reverse(char[] arr,int i, int j){
while(i < j){
char tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
}
}```