题目描述:
将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I
依次输出倒置之后的字符串,以空格分割
思路:
先把字符串转换成字符存储到数组中,用到toCharArray()方法。
然后把所有的字符逆转,然后根据空格划分成每个单词,依次逆转,相当于在每个小区间里面再次逆转
代码实现:
import java.util.*;
public class Main{
//翻转函数
public static void reserve(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 sc = new Scanner(System.in);
String str = sc.nextLine();
//字符串转化为数组
char[] ch = str.toCharArray();
//整体逆转
reserve(ch,0,ch.length-1);
int i = 0;
while(i < ch.length){//防止越界
int j = i;
while(j< ch.length && ch[j] != ' '){
j++;
}
//j是空格了
if(j < ch.length){
reserve(ch,i,j-1);
i =j+1;
}else{
reserve(ch,i,j-1);
i = j;
}
}
//打印翻转后的结果
String str1 = new String(ch);
System.out.println(str1);
}
}