2017 实习生 阿里巴巴 java开发工程师笔试题 字符串匹配
来源:互联网 发布:js bigdecimal 计算 编辑:程序博客网 时间:2024/05/22 06:42
阿里的消息中间件,负责淘宝天猫支付宝等各个系统的消息中转,削峰填谷及架构的解耦。
在每年的双11中承载了数万亿的消息。消息中间件中有Pub/Sub两个角色,Pub方发送消息到消息中间件,
消息中间件再根据订阅关系投递给订阅方。
例如用户成功购买了一个物品,交易平台(Pub)会发送一条交易完成(trade-done)的消息
,购物车平台(Sub)订阅到这个消息后,会将用户的购物车物品删除掉。
这里涉及一个问题,交易平台会发送各种类型的消息,消息中间件是如何准确的将相应的消息投递给购物车平台的?
所使用的就是消息中间件的过滤功能,过滤的方式有很多种,表达式判断,正则匹配等。
假设让你来实现一个过滤功能,来匹配订阅关系是否符合,给定如下条件:
‘?’ 匹配一个字符
‘*’ 匹配任意连串的字符
如上面的例子中,购物车平台订阅方式是pattern=*trade-done,那么
filter(100-trade-done, pattern) = 1,
filter(200-trade-done, pattern) = 1,
filter(200-paid-done, pattern) = 0
如果pattern=200-?*-done :
filter(100-trade-done, pattern) = 0,
filter(200-trade-done, pattern) = 1,
filter(200-paid-done, pattern) = 1
如果pattern=1*trade*done :
filter(100-trade-done, pattern) = 1,
filter(200-trade-done, pattern) = 0,
filter(200-paid-done, pattern) = 0
已输入字数: 3 / 10000
时间限制: 1S (C/C++以外的语言为: 3 S) 内存限制: 64M (C/C++以外的语言为: 576 M)
输入:
第一行,需要过滤的字符串 第二行,匹配模式
输出:
匹配结果,匹配成功返回1,匹配失败返回0
输入范例:
100-trade-done
1*trade*done
输出范例:
运行结果如下:
在每年的双11中承载了数万亿的消息。消息中间件中有Pub/Sub两个角色,Pub方发送消息到消息中间件,
消息中间件再根据订阅关系投递给订阅方。
例如用户成功购买了一个物品,交易平台(Pub)会发送一条交易完成(trade-done)的消息
,购物车平台(Sub)订阅到这个消息后,会将用户的购物车物品删除掉。
这里涉及一个问题,交易平台会发送各种类型的消息,消息中间件是如何准确的将相应的消息投递给购物车平台的?
所使用的就是消息中间件的过滤功能,过滤的方式有很多种,表达式判断,正则匹配等。
假设让你来实现一个过滤功能,来匹配订阅关系是否符合,给定如下条件:
‘?’ 匹配一个字符
‘*’ 匹配任意连串的字符
如上面的例子中,购物车平台订阅方式是pattern=*trade-done,那么
filter(100-trade-done, pattern) = 1,
filter(200-trade-done, pattern) = 1,
filter(200-paid-done, pattern) = 0
如果pattern=200-?*-done :
filter(100-trade-done, pattern) = 0,
filter(200-trade-done, pattern) = 1,
filter(200-paid-done, pattern) = 1
如果pattern=1*trade*done :
filter(100-trade-done, pattern) = 1,
filter(200-trade-done, pattern) = 0,
filter(200-paid-done, pattern) = 0
已输入字数: 3 / 10000
时间限制: 1S (C/C++以外的语言为: 3 S) 内存限制: 64M (C/C++以外的语言为: 576 M)
输入:
第一行,需要过滤的字符串 第二行,匹配模式
输出:
匹配结果,匹配成功返回1,匹配失败返回0
输入范例:
100-trade-done
1*trade*done
输出范例:
1
package alibaba.writetest2017;import java.util.Scanner;import java.util.StringTokenizer;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Filter { public static int handleString(String filter,String match) { String[] matchs=match.split("\\*|\\?");//遇到匹配字符串有* 或者是? 就进行字符串分割 //查找过滤的字符串是含有被分割的字符串,若是全部含有,则返回1,否则返回0 for (int i = 0; i < matchs.length; i++) { if (!filter.contains(matchs[i])) {return 0;}}return 1; }public static void main(String[] args) { Scanner sc=new Scanner(System.in); while (sc.hasNext()) { String filter=sc.nextLine().trim(); String match=sc.nextLine().trim(); System.out.println(handleString(filter, match));}}}
运行结果如下:
0 0
- 2017 实习生 阿里巴巴 java开发工程师笔试题 字符串匹配
- 阿里巴巴2017实习生招聘笔试题(算法工程师)
- 阿里巴巴2017实习生笔试题+JAVA工程师能力评估部分题目
- 阿里巴巴实习生笔试研发工程师
- 阿里巴巴2017实习生笔试题
- 2016/04/20阿里巴巴暑假实习生笔试–Java开发工程师
- 2017 实习生 阿里巴巴 java笔试题 逆波兰表达式
- 2014.3.29阿里巴巴实习生招聘-研发工程师笔试题
- 阿里巴巴2014实习生招聘研发工程师笔试题
- 阿里巴巴2014实习生笔试题-研发工程师-北京站
- 2015阿里巴巴实习生笔试题-java
- 阿里巴巴2015算法工程师实习生笔试卷
- 阿里巴巴2015算法工程师实习生笔试卷
- 网易2017实习生招聘笔试题 C++开发工程师
- 阿里巴巴2017届实习生笔试题反思
- 阿里巴巴2017实习生笔试题(一)
- 阿里巴巴2017实习生笔试题(二)
- 阿里巴巴2017实习生招聘笔试题
- 栈的压入、弹出序列
- mybatis高级输出映射(一对一查询输出映射)
- 二叉树前序、中序、后序遍历非递归写法的透彻解析
- poj 2521 How much did the businessman lose
- HttpClient之配置ssl,采用绕过证书验证实现https
- 2017 实习生 阿里巴巴 java开发工程师笔试题 字符串匹配
- ATM面向对象的分析与设计之——分析类图
- LeetCode115 Distinct Subsequences
- steam vr 手柄的交互
- LeetCode116 Populating Next Right Pointers in Each Node
- POJ2313 Sequence
- MySQL 安装和启动服务,“本地计算机 上的 MySQL 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。”
- 练习
- acm 斐波那契博弈(裸题代码)