• Java 蓝桥杯校赛 谁最长?


    Java 蓝桥杯校赛 谁最长?

    题目描述

    英语老师每天都会布置很多例句练习,并且让同学们找到例句中最长的单词进行背诵。

    很多同学都懒得去数数,找出最长的单词。请你写一个程序,能够找出一个英文长句中最长的单词,并原样输出它。

    如果发现一个句子中有多个单词的长度并列最长,则输出并列最长的单词们中从左向右找到的第一个。

    而且,如果这个单词伴随标点符号,标点符号是在单词右侧表示句子结束的符号(除一对双引号和单引号外的符号),则该标点符号不计入单词长度

    比如:

    Jackson’s hat is red.中,Jackson’s的单引号是在单词中间,表示所有格,这是一个完整的表述,因此Jackson’s看做一个单词,长度是9。

    Jenny holds a broom.中,Jenny和broom长度一样,选择Jenny输出为结果。broom后的英文句号此时不计入单词长度。

    Tim has a ‘wonderful’ headphone.中,wonderful和headphone都是9个字母,但是wonderful被两个单引号或双引号包含,则最长的单词是’wonderful’,单引号计入长度,长度为11。

    但如果是’Good idea’, Tom says.这样,用单引号或双引号包含的多个单词,则该单引号或双引号不计入单词长度,该句子输出Good

    更多例子:

    Margaret’s toy is a pretty doll ➞ Margaret’s

    A thing of beauty is a joy forever. ➞ forever

    Forgetfulness is by all means powerless! ➞ Forgetfulness

    解题思路

    主要考察的就是 模拟判断 由题可以分析出需要考虑的条件有:
    1.在单个单词中的 表示所有格 可以看作为一个字符。
    2.若长度相同的单词有多个则输出最先出现的单词。
    3.若单个单词被’ '或" "包含 则也算作单词的长度。
    4.若单个单词只有左边或者右边含有 ’ 或者 " 则删除对应的 '或"。
    5.而在单词右侧的标点符号如: ,和 . 以及!和?不计入单词长度 也应删除。
    具体思路
    1.由于是直接输入一串字符所以用String类型m来接收。
    2.用split函数按照空格来切分放入String数组n中。
    3.建立一个int数组x来存储每个单词的长度(在这之前要先经过上面的条件判断和调整),并用Arrays.sort(x)进行升序排列
    4.再次循环输出n中每个字符串的长度直到有字符的长度等于n[n.length-1].结束循环输出该字符串。
    注意事项
    由于字符类型需要用’ '包含所以单引号的判断需要使用到转义字符 \ ,eg:‘\’'才表示选取到了单引号

    代码

    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner scanner=new Scanner(System.in);
            String m=scanner.nextLine();            //接收字符串
            if (m.equals("")){                      //判断是否为空 若为空直接输出0
                System.out.print(0);
            }else {
                String []n=m.split(" ");     //若不为空按空格切分 
                int []x=new int[n.length];         //创建int类型数组 接收每个单词的长度
                for (int i=0;i<n.length;i++){
                    char [] ch=n[i].toCharArray();  //把每个字符串转为字符数组依次判断
                    n[i]=n[i].replace(",","");  //删除无效的字符
                    n[i]=n[i].replace(".","");
                    if (ch[ch.length-1]=='?'){
                        n[i]=n[i].replace("?","");
                    }else if (ch[ch.length-1]=='!'){
                        n[i]=n[i].replace("!","");
                    }
                    for (char c : ch) {             //判断单词是否被' '或" "包含
                        if (c == '\'') {
                            if (ch[ch.length - 1] != '\'')
                                n[i]=n[i].replace("'",""); //删除单个 单引号
                            break;
                        } else {
                            if (ch[ch.length - 1] == '\'')
                                n[i]=n[i].replace("'","");
                            break;
                        }
                    }
                    x[i] = n[i].length();           //得到最后的单词长度 加入到整形数组
                }
                Arrays.sort(x);                     //升序排列
                int y=x[x.length-1];                //最长单词的长度
                for (String s : n) {                //依次判断 得到最长的输出 并结束循环
                    if (y == s.length()) {
                        System.out.print(s);
                        break;
                    }
                }
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
  • 相关阅读:
    【RocketMQ】RocketMQ存储结构设计
    【Gazebo入门教程】第四讲 场景建模/建筑编辑器
    【场景化解决方案】深度融合钉能力,实现企业级办公费控精细化管理
    golang本地缓存库之bigcache
    MIT6.5830 Lab0-Go tutorial实验记录(三)
    汉朔科技IPO:引领智慧零售新时代,推动行业数字化转型
    els 方块停在方块上。
    【UE5 智慧城市系列】5-通过鼠标键盘控制摄像机
    非零基础自学Java (老师:韩顺平) 第15章 泛型 15.3 泛型介绍 && 15.4 泛型的语法
    前端框架 Electron 使用总结
  • 原文地址:https://blog.csdn.net/joreng/article/details/127960106