单词倒排
对字符串中的所有单词进行倒排。
- 构成单词的字符只有26个大写或小写英文字母;
- 非构成单词的字符均视为单词间隔符;
- 要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
- 每个单词最长20个字母;
数据范围:字符串长度满足 1≤n≤10000
输入描述:
输入一行,表示用来倒排的句子输出描述:
输出句子的倒排结果示例1
输入
I am a student输出
student a am I示例2
输入
$bo*y gi!r#l输出
l r gi y boJava 编程
package cn.net.javapub.demo2.demo;
/**
* @author: shiyuwang
*/
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line = br.readLine()) != null && line.length() > 0) {
char[] array = line.trim().toCharArray();
StringBuilder sb = new StringBuilder();
boolean flag = false;
int mark = -1;
for (int i = array.length - 1; i >= 0; i--) {
if ((array[i] >= 'A' && array[i] <= 'Z') || (array[i] >= 'a' && array[i] <= 'z')) {
if (mark == -1)
mark = i;
flag = true;
} else if (flag) {
sb.append(array, i + 1, mark - i).append(' ');
mark = -1;
flag = false;
}
}
if (flag) {
sb.append(array, 0, mark + 1);
System.out.println(sb.toString());
} else {
System.out.println(sb.substring(0, sb.length() - 1));
}
}
}
}展示效果:


















