题解 | #句子逆序#

句子逆序

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

全部评论

相关推荐

06-26 17:24
已编辑
宁波大学 golang
迷失西雅图:别给,纯kpi,别问我为什么知道
点赞 评论 收藏
分享
太难了,双9bg也被刷
投递韶音科技等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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