博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Regular Expression Matching
阅读量:6501 次
发布时间:2019-06-24

本文共 2162 字,大约阅读时间需要 7 分钟。

正则匹配

Regular Expression Matching

Implement regular expression matching with support for '.' and '*'.

'.' Matches any single character.'*' Matches zero or more of the preceding element.The matching should cover the entire input string (not partial).The function prototype should be:bool isMatch(const char *s, const char *p)Some examples:isMatch("aa","a") → falseisMatch("aa","aa") → trueisMatch("aaa","aa") → falseisMatch("aa", "a*") → trueisMatch("aa", ".*") → trueisMatch("ab", ".*") → trueisMatch("aab", "c*a*b") → true
1 package com.rust.TestString; 2  3 class Solution { 4     public boolean isMatch(String s, String p) { 5         if (p.length() == 0) { 6             return s.length() == 0; 7         } 8         if (p.length() == 1) { 9             return (s.length() == 1) && (p.charAt(0) == s.charAt(0) || p.charAt(0) == '.');10         }11         // next char is not '*': must match current character12         if (p.charAt(1) != '*') {13             if (s.length() == 0) {14                 return false;15             } else {16                 return (s.charAt(0) == p.charAt(0) || p.charAt(0) == '.')17                         && isMatch(s.substring(1), p.substring(1));  // judge next char18             }19         } else {    // next char is '*'20             while (s.length() > 0 && (p.charAt(0) == s.charAt(0) || p.charAt(0) == '.')) {21                 if (isMatch(s, p.substring(2))) {22                     return true;23                 }24                 s = s.substring(1);25             }26             return isMatch(s, p.substring(2));27         }28     }29 }30 31 32 public class RegularExpressionMatching {33     public static void main(String args[]){34         Solution solution = new Solution();35         String s = "abcdefg";36         System.out.println(solution.isMatch(s, "abcde*"));37         System.out.println(solution.isMatch(s, ".*"));38         System.out.println(solution.isMatch("abcdefg", "a.*"));39         System.out.println(solution.isMatch("abcdefg", ".b."));40         System.out.println(solution.isMatch("abcdefg", ""));41         System.out.println(s);42     }43 }

输出:

false

true
true
false
false
abcdefg

转载地址:http://fvtyo.baihongyu.com/

你可能感兴趣的文章
只有在北方的中国帝国能力享受免费的商业课程:财富规划法与愿景
查看>>
食谱API自由和开放接口-为了发展自己的健康厨房APP应用
查看>>
汇编语言的应用
查看>>
一句话的设计模式(收藏)
查看>>
device platform 相应的表
查看>>
php des 加密解密实例
查看>>
【Mac】Mac键盘实现Home, End, Page UP, Page DOWN
查看>>
14、Cocos2dx 3.0三,找一个小游戏开发Scene and Layer:游戏梦想
查看>>
cocos2d-x3.x屏蔽遮罩层屏蔽触摸button
查看>>
实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求
查看>>
安德鲁斯----多媒体编程
查看>>
ZOJ 1203 Swordfish 旗鱼 最小生成树,Kruskal算法
查看>>
swift版的元组
查看>>
磁盘管理 之 parted命令添加swap,文件系统
查看>>
什么是redis,redis能做什么,redis应用场景
查看>>
[关注]Visual Studio 2010 和 .NET Framework 4.0 专题
查看>>
信息系统开发平台OpenExpressApp - 支持差异保存
查看>>
linux下的webserver BOA及CGIC库的使用指南(转帖)
查看>>
[zz]在linux中出现there are stopped jobs 的解决方法
查看>>
Delphi下实现全屏快速找图找色 一、数据提取
查看>>