华为OJ——单词倒排

    xiaoxiao2024-07-25  14

    题目描述

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

    说明:

    1、每个单词是以26个大写或小写英文字母构成;

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

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

    4、每个单词最长20个字母;

    输入描述:

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

    输出描述:

    输出句子的逆序

    输入例子:
    I am a student
    输出例子:
    student a am I 方法一:

    import java.util.*; public class Main{ public static void main(String[] args) { Scanner scan=new Scanner(System.in); StringBuilder sb=new StringBuilder(); while(scan.hasNext()) { String str=scan.nextLine(); for(char ch:str.toCharArray()){ if(!(ch>='a'&&ch<='z')&&!(ch>='A'&&ch<='Z')){ if(!sb.toString().equals("")) sb.append(" "); } else sb.append(ch); } String[] strs=sb.toString().split(" "); for(int i=strs.length-1;i>=0;i--){ if(i!=0) System.out.print(strs[i]+" "); else System.out.println(strs[i]); } } } }

    方法二(正则表达式):

    import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = ""; while(sc.hasNext()) { str = sc.nextLine(); String[] strs = str.split("[^A-Za-z]+"); for(int i=strs.length-1;i>=0;i--) { if(i == 0) { System.out.println(strs[i]); } else { System.out.print(strs[i]+" "); } } } } }

    转载请注明原文地址: https://ju.6miu.com/read-1291014.html
    最新回复(0)