百木园-与人分享,
就是让自己快乐。

java题目 单词倒排

描述

对字符串中的所有单词进行倒排。

说明:

1、构成单词的字符只有26个大写或小写英文字母;

2、非构成单词的字符均视为单词间隔符;

3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;

4、每个单词最长20个字母;
 
数据范围:字符串长度满足 1 \\le n \\le 10000 \\1≤n≤10000 

输入描述:

输入一行以空格来分隔的句子

输出描述:

输出句子的逆序

示例1

输入:

I am a student


输出:

student a am I

示例2

输入:

$bo*y gi!r#l


输出:

l r gi y bo

 

 

 1 import java.io.*;
 2 
 3 public class Main{
 4     public static void main(String[] args) throws IOException {
 5         InputStream in = System.in;
 6         int available = in.available();
 7         char[] arr = new char[available];
 8         int off_word = 0;
 9         int off_end = arr.length;
10         char c;
11         
12         for(int i = 0; i < available; i++) {
13             c = (char)in.read();
14             if((c >= \'a\' && c <= \'z\') || (c >=\'A\' && c <= \'Z\')) {
15                 arr[off_word] = c;
16                 off_word++;
17             }else if (off_word > 0) {
18                 //遇到非单词字符,上面已经统计了该单词字符数量off_word
19                 //将该单词拷贝到末尾,假如arr长度16,第一个单词字符为1个,目标索引则为:arr[16-1]
20                 System.arraycopy(arr, 0, arr, off_end - off_word, off_word);
21                 off_end = off_end - (off_word + 1);
22                 off_word = 0;
23                 arr[off_end] = \' \';
24             }
25         }
26         //valueOf将 char 数组 data 中 由 data[offset] 开始取 count 个元素转换成字符串
27         System.out.println(String.valueOf(arr, off_end +1 ,arr.length - (off_end + 1)));
28     }
29 }

 


来源:https://www.cnblogs.com/m6233/p/15962713.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » java题目 单词倒排

相关推荐

  • 暂无文章