题解 | #句子逆序#

句子逆序

https://www.nowcoder.com/practice/48b3cb4e3c694d9da5526e6255bb73c3

思路:

  1. 先将整个句子反转,在反转每一个单词
  2. 将句子反转:每一个单词在句子中的位置反转了
  3. 再将每一个单词反转:单词变回原样

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;
        }
    }
}

全部评论

相关推荐

2025-12-26 10:52
河北传媒学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务