迅雷2017校招Java笔试题第一题

分享迅雷2017年校招Java笔试的第一道编程题,涉及正则表达式。题目要求处理可能的多行输入,但实现仅覆盖了单行输入的情况,对于多行输入的结束判断存在困惑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今晚刚做完迅雷的校招笔试题,感觉挺郁闷的,在这里跟大家分享下第一道编程题。

1、 题目
这里写图片描述

2、 输入输出及样例
输入输出要求:
这里写图片描述

样例:
这里写图片描述

3、 我的思路
题目里也提示了用正则表达式来匹配,所以没有太多需要思考的。但是有个让我很是郁闷的问题就是题目说输入可能是多行,我想了很久没想出该怎么判断这多行是否结束了,这让我很费解。下面的实现这是基于【单行输入】。

4、 我的实现


import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class Tiqu
{
    public static void main(String[] args)
    {       
        Scanner scanner = new Scanner(System.in);       
        String input = scanner.nextLine();          
        Pattern pattern = Pattern.compile("thunder://[A-Za-z0-9+/=]*");
        Matcher matcher = pattern.matcher(input);
        List<String> result= new ArrayList<String>();
        int count = 0;
        while(matcher.find())
        {
            String get = matcher.group();
            get = get.substring(0, get.length()-1);
            if(!result.contains(get))
            {
                result.add(get);
                count++;
            }           
        }

        if(count == 0)
        {
            System.out.println("no");
        }
        else
        {
            System.out.println(count);
            for(String s:result)
            {
                System.out.println(s);
            }       
        }                   
    }
}

5、 总结
以上只是基于单行输入来做的,所以测试只通过了50%。至于多行输入,我至今还没搞清楚该怎么判断输入结束,所以没写这种情况,也请实现了的大神不吝赐教,不胜感激!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值