对字符串中所有单词进行倒排-C语言/Java

描述

        输入一个字符串,输出字符串中单词的倒序。

要求

  1. 构成单词的字符只有26个大写或小写英文字母。
  2. 非构成单词的字符均视为单词间隔符;
  3. 倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符
  4. 每个单词最长20个字母。

示例1

输入:I am a student
输出:student a am I

示例2

输入:$bo*y gi!r#l

输出:l r gi y bo

        C语言每次输入指定字符集即一个单词,将其放入数组中,再进行倒序输出

#include <stdio.h>

#include <stdlib.h>

int main() {

    char ch[200][30];

    int i=0;

    while(1)

    {   //输入指定字符集即大小写字母

        scanf("%[a-z|A-Z]",ch[i]);

        if(getchar()=='n')

        break;

        i++;

    }

    for(int j=i;j>=0;j--)

    {

        printf("%s ",ch[j]);

    }

    return 0;

}

        Java以非大小写字母为分隔符,将输入的整个字符串进行分割,将分割得到的字符串数组即单词数组倒序存入新字符串中,新字符串每两个单词中间有一个空格,打印新字符串。

import java.util.Scanner;

public class Main {

    public static void main(String[] args) { 

        Scanner in = new Scanner(System.in);

        String str=in.nextLine();

        //以非大小字母的字符为分隔符

        String[] words=str.split("[^a-zA-Z]");

        StringBuilder str1=new StringBuilder();

        for(int i=words.length-1;i>=0;i++)

        {

            str1.append(words[i]);

            if(i!=0)

            str1.append(" ");

        }

        System.out.println(str1.toString());

    }

}