题解 | #句子逆序#
句子逆序
https://www.nowcoder.com/practice/48b3cb4e3c694d9da5526e6255bb73c3
思路:
- 先将整个句子反转,在反转每一个单词
- 将句子反转:每一个单词在句子中的位置反转了
- 再将每一个单词反转:单词变回原样
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
/**
* 先句子反转,再单词反转
*/
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
char[] chars = s.toCharArray();
int len = chars.length;
exchange(chars, 0, len-1);
int l=0, r=0;
while(l<len&&r<len){
// 找到每一个单词, l指向单词左边, r指向单词右边的空格
//注意越界问题
while(l<len&&chars[l]==' ') l++;
r=l;
while(r<len&&chars[r]!=' ') r++;
exchange(chars, l, r-1);
l=r;
}
System.out.println(new String(chars));
}
private static void exchange(char[] chars, int start, int end){
int len = end - start + 1;
for(int i=start; i<start+len/2; i++){
char tmp = chars[i];
chars[i] = chars[end-(i-start)];
chars[end-(i-start)] = tmp;
}
}
}
网易游戏公司福利 634人发布