字符串通配符

字符串通配符

http://www.nowcoder.com/questionTerminal/43072d50a6eb44d2a6c816a283b02036

我承认我有投机取巧的成分,但是用正则表达式来做的话会很简单。
暂且就认为测试用例和题目上的差不多,正则表达式中只含有"? * ."这三种,将其替换为对应的就可以了。

import java.util.Scanner;

/**
 * 实现通配符
 * ? 匹配一个字符  [0-9A-Za-z]{1}
 * * 匹配0个或以上的字符  [0-9A-Za-z]{0,}
 * (字符由英文字母和数字0-9组成,不区分大小写。下同)
 */
public class Test71 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextLine()) {
            String regx = scanner.nextLine();
            String string = scanner.nextLine();
            //做相应的替换
            regx = regx.replaceAll("\\?", "[0-9A-Za-z]{1}");
            regx = regx.replaceAll("\\*", "[0-9A-Za-z]{0,}");
            regx = regx.replaceAll("\\.", "\\\\.");
            boolean result = string.matches(regx);
            System.out.println(result);
        }
    }
}

拿来测试,用例全部通过。

全部评论
我也是这么写的,超时的话只要先把多个*替换成一个*就行,它们效果一样,这样可以大大减少运算量
2 回复 分享
发布于 2022-01-09 15:55
第11个用例超时了
2 回复 分享
发布于 2021-08-07 16:31
卧龙你好,我是凤雏
1 回复 分享
发布于 2021-07-10 15:02
我承认我有赌的成分
1 回复 分享
发布于 2021-02-17 13:54
我王多鱼赞了
1 回复 分享
发布于 2020-06-23 21:30
这个不严谨。假如输入的模式里面,正好含有正则表达式的符号,比如{、}、(、)、[、]这些,那么它就有别的意义了
点赞 回复 分享
发布于 2023-12-06 21:59 江苏
刷题跟实际工作不同就是在于查缺补漏,锻炼算法思维。
点赞 回复 分享
发布于 2023-10-30 22:20 四川
不能区分大小写
点赞 回复 分享
发布于 2023-03-06 15:13 广西
原汤化原食是吧
点赞 回复 分享
发布于 2022-09-24 00:47 广东
就算没有这个问题,时间也超时
点赞 回复 分享
发布于 2022-07-17 09:33
有问题,第五个示例不通过,你这个区分大小写了
点赞 回复 分享
发布于 2022-07-17 09:32
ps:打卡
点赞 回复 分享
发布于 2022-06-07 22:39
有点不明白为什么要做替换,这些通配符在原本的正则表达式中不能用吗?
点赞 回复 分享
发布于 2022-03-23 11:44
改进了一下 原来的代码超时并且不能区分大小写的匹配 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNextLine()) { String regx = scanner.nextLine(); String string = scanner.nextLine(); regx = regx.toLowerCase(); string = string.toLowerCase(); regx = regx.replaceAll("\\*+","\\*"); //做相应的替换 regx = regx.replaceAll("\\?", "[0-9A-Za-z]{1}"); regx = regx.replaceAll("\\*", "[0-9A-Za-z]{0,}"); regx = regx.replaceAll("\\.", "\\\\."); boolean result = string.matches(regx); System.out.println(result); } } }
点赞 回复 分享
发布于 2022-01-21 16:06
超时了啊带佬
点赞 回复 分享
发布于 2021-10-17 23:13
咱俩思路一样,哈哈哈,不过你没提前转成统一大小写,提前转了还能多通过一个用例,我是扑街在第12个用例的,超时了。。。
点赞 回复 分享
发布于 2021-08-07 18:19

相关推荐

来个大佬救一下,为上投了都是石沉大海了,没实习经历的话怕秋招直接进不了面。什么实习这么难找,基本
心态爆炸了:现在正式的岗位都少,实习基本不咋招的,除了大厂,中小企业其实没那么多岗位需求,就算是有,大多都是招一两个廉价劳动力,同时,他们也会希望你一来就能干活的,没时间培训你,就让你了解公司的项目,你了解完就可以开始干活。再者是,很多低质量的实习其实用处没有那么大的。我去年也是找实习找到破防,最后去了一家深圳的小公司实习,工作对我来说很简单,甚至不如我在学校做的项目,秋招的时候,这段实习经历也并没有帮上什么忙,投递简历,依旧非常低的回复率。低回复率是常态,尤其是找实习,找不到,那就把重心放在优化自己的简历和项目,多看八股文,锻炼自己的面试能力,多看别人的面经,自己模拟面试,等秋招的时候,只要有那么寥寥几次,好好抓住那几次机会。
点赞 评论 收藏
分享
牛客83700679...:简历抄别人的,然后再投,有反馈就是简历不行,没反馈就是学历不行,多投多改只要技术不差机会总会有的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
33
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务