Leetcode: Wildcard Matching
2015-09-15 12:09
337 查看
Question
Implement wildcard pattern matching with support for ‘?’ and ‘*’.‘?’ Matches any single character.
‘*’ Matches any sequence of characters (including the empty sequence).
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”) → false
isMatch(“aa”,”aa”) → true
isMatch(“aaa”,”aa”) → false
isMatch(“aa”, “*”) → true
isMatch(“aa”, “a*”) → true
isMatch(“ab”, “?*”) → true
isMatch(“aab”, “c*a*b”) → false
Show Tags
Show Similar Problems
My first try
[code]class Solution(object): def isMatch(self, s, p): """ :type s: str :type p: str :rtype: bool """ if len(p)==0: return len(s)==0 if len(s)==0: temp = True for elem in p: if elem!='*': temp = False return temp s, p = list(s), list(p) res = [[False]*(len(p)+1) for dummy in range(len(s)+1)] res[0][0] = True for ind in range(1,len(s)+1): res[ind][0] = False for j in range(1,len(p)+1): res[0][j] = res[0][j-1] and p[j-1]=='*' if p[j-1]!='*': for i in range(1,len(s)+1): res[i][j] = res[i-1][j-1] and (p[j-1]=='?' or s[i-1]==p[j-1]) else: for i in range(0,len(s)+1): if res[i][j-1]==False: i += 1 while i<=len(s): res[i][j] = True i += 1 return res[-1][-1]
Error: Time Limit Exceeded
Solution 1
Get idea from here1,[code]class Solution(object): def isMatch(self, s, p): """ :type s: str :type p: str :rtype: bool """ if len(p)==0: return len(s)==0 if len(s)==0: temp = True for elem in p: if elem!='*': temp = False return temp if len(s)>=300 and p[0]=='*' and p[-1]=='*': # see here1 above return False s, p = list(s), list(p) res = [False]*(len(s)+1) res[0] = True for j in range(1,len(p)+1): #res[0] = res[0] and p[j-1]=='*' if p[j-1]!='*': for i in range(len(s),0,-1): res[i] = res[i-1] and (p[j-1]=='?' or s[i-1]==p[j-1]) else: for i in range(0,len(s)+1): if res[i]==False: i += 1 else: break while i<=len(s): res[i] = True i += 1 res[0] = res[0] and p[j-1]=='*' return res[-1]
Solution 2
Get idea from here1, or here2.[code]
相关文章推荐
- 大整数相乘
- 【异常处理】Incorrect string value: '\xF0\x90\x8D\x83...' for column... Emoji表情字符过滤的Java实现
- mysql/Java服务端对emoji的支持
- emoji处理方式大起底
- 用原生JS产生随机长度和随机值的数组
- Magento-设置产品显示的条数和默认条数
- 网易笔试题 找朋友 真的是找朋友
- Servlet运行周期与运行原理
- linux系统安装nginx服务器
- 网易笔试题 找朋友 真的是找朋友
- HDU 4081 Qin Shi Huang's National Road System 最小生成树+倍增求LCA
- SSDB图形化界面管理工具-phpssdbadmin的安装配置
- Java初体验(一)
- [5]startActivityForResult的简单应用
- linux 命令 去掉重复行
- java List转换为字符串并加入分隔符
- 下载安装CocoaPods
- hive如何提交hql语句到hive上执行
- 基于thinkphp的后台管理系统模板快速搭建
- Jump Game