与字符逆序(一)不同,句子逆序,单词顺序。例如: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);// 字符串最后一个单词逆序 } }