洛谷 B3640 T3 句子反转

15 阅读2分钟

B3640 T3 句子反转

题目背景

请尽量在 30min 之内写完题目。这是指「写代码」的时间;「读题」时间不计算在内。

题目描述

给定一行句子,每个词之间用空格隔开,要么是全小写英文单词,要么是全大写英文单词,要么是自然数。

要求将这些单词倒序输出。而且对于每个单词,如果是小写词,应当转为大写;如果是大写词,应当转为小写;如果是自然数,应该倒转输出。

举一个例子:

we choose TO go 2 the 123 moon

程序应当输出:

MOON 321 THE 2 GO to CHOOSE WE

输入格式

仅一行,即需要反转的句子。

输出格式

仅一行,表示程序对句子的处理结果。

输入输出样例 #1

输入 #1

we choose TO go 2 the 123 moon

输出 #1

MOON 321 THE 2 GO to CHOOSE WE

说明/提示

样例解释

首先应当按单词逆序,即:

moon 123 the 2 go TO choose we

小写变大写、大写变小写、倒转自然数之后,得到最终结果:

MOON 321 THE 2 GO to CHOOSE WE
数据规模与约定

对于 的数据,句子中包含的单词数量不超过 ,每个单词长度不超过

思路分析

用string s接收输入的字符串,再用数组arr记录每个用空格隔开的字符串。再遍历数组,如果字符串第一个为小写,则变成大写存入数组brr,若是大写同上,数字则用StringBuilder的reverse方法反转,再toString。最后倒序输出brr。

代码实现

package LAN;
import java.util.*;
public class juzifanzhaun {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		String s = sc.nextLine();
		String[] arr = s.split(" ");
		String[] brr = new String[arr.length];
		int i= 0;
		for(String a : arr) {
			if(a.charAt(0) >= 'a'&&a.charAt(0) <= 'z' ) {
				brr[i] = a.toUpperCase();
				i++;
			}
			if(a.charAt(0) >= 'A'&&a.charAt(0) <= 'Z' ) {
				brr[i] = a.toLowerCase();
				i++;
			}
			if(a.charAt(0) >= '0'&&a.charAt(0) <= '9' ) {
				StringBuilder b = new StringBuilder();
				b.append(a);
				String c = b.reverse().toString();
				brr[i] = c;
				i++;
			}
		}
		for(int j = brr.length-1;j >= 0 ; j--) {
			System.out.print(brr[j]+" ");
		}
	}

}