java笔试之字符逆序(二)

与字符逆序(一)不同,句子逆序,单词顺序。例如:I am a student 输出为student a am I。

想法:先字符串句子逆序,然后针对每个单词再逆序一遍。

package test;

import java.util.Scanner;

//一个句子单词顺序,句子逆序
public class exam10 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String str = scanner.nextLine();
            char[] chars = str.toCharArray();
            reverse(chars, 0, chars.length - 1);
            reverseWord(chars);
            for (int i = 0; i < chars.length; i++) {
                System.out.print(chars[i]);
            }
        }
        scanner.close();
    }

    // 字符串组逆序
    public static void reverse(char[] chars, int start, int end) {
        for (int i = start, j = end; i < j; i++, j--) {
            char temp = chars[i];
            chars[i] = chars[j];
            chars[j] = temp;
        }
    }

    public static void reverseWord(char[] sentence) {
        int start = 0;// 记录每一个word的开始位置
        for (int i = 0; i < sentence.length; i++) {
            if (sentence[i] != ' ') {
                continue;
            } else {
                // 第一个单词找到结尾位置,进行逆序
                reverse(sentence, start, i - 1);
                // 查找下一个位置
                start = i + 1;
            }
        }
        reverse(sentence, start, sentence.length - 1);// 字符串最后一个单词逆序
    }
}

 

posted on 2017-02-17 14:43  贝拉拉  阅读(157)  评论(0编辑  收藏  举报

导航