python学习日志7
2016-12-13 10:02
393 查看
leetcode之wildcard matching解法
这个是通配符的匹配与实现,只用到*,?两个字符
第一次思考之这个问题,用到了函数递归方法,即先将判断出*的字符串截取,继续调用isMatch()这个函数
但是最后超时了,python函数调用虽然方便,但是底层的实现还是用C语言,对于字符串的操作如果是截取,还是很浪费时间的,另外递归也可以用循环来代替,所以把上面的代码整合成下面的代码了,但是总体的思路是一样的,所以以后写代码,还是要注意质量
这里学习python已经一个月了,自己还是个小白,希望大神多多指点
这个是通配符的匹配与实现,只用到*,?两个字符
第一次思考之这个问题,用到了函数递归方法,即先将判断出*的字符串截取,继续调用isMatch()这个函数
class WildcardMatching(object): def isMatch(self,s,p): i=0 j=0 t=0 if len(s)<self.reallen(p): return False while i<len(s): #这里只判断?号 if j<len(p) and (p[j]==s[i] or p[j]=='?'): j+=1 i+=1 continue #这里判断*号 elif j<len(p) and p[j]=='*': while j<len(p): if p[j]=='*': j+=1 else: break if j==len(p): return True else: t=len(s)-self.reallen(p[j:]) while i<=t: if p[j]==s[i] or p[j]=='?': if self.isMatch(s[i:],p[j:]): return True i+=1 if i==t+1: return False else: return False return True def reallen(self,l): return len(l)-l.count('*')
但是最后超时了,python函数调用虽然方便,但是底层的实现还是用C语言,对于字符串的操作如果是截取,还是很浪费时间的,另外递归也可以用循环来代替,所以把上面的代码整合成下面的代码了,但是总体的思路是一样的,所以以后写代码,还是要注意质量
class WildcardMatch(object): def isMatch(self,s,p): i=0 j=0 m=0 n=0 if len(s)<len(p)-p.count('*'): return False while i!=len(s): if j<len(p) and (p[j]=='?' or p[j]==s[i]): i+=1 j+=1 continue if j<len(p) and p[j]=='*': n=j j+=1 m=i continue if n<len(p) and p =='*': j=n+1 i=m+1 m+=1 continue return False while j<len(p) and p[j]=='*': j+=1 return j==len(p)
这里学习python已经一个月了,自己还是个小白,希望大神多多指点
更多leetcode解题源码,请查看我的github地址https://github.com/Jum1023/leetcode
相关文章推荐
- Python模块学习 ---- logging 日志记录(一)
- python 学习日志(2)
- Python模块学习- logging 日志记录
- python学习日志<一>
- python 学习日志(2)
- Dive Into Python学习日志
- Python模块学习 ---- logging 日志记录(一)
- Python模块学习 ---- logging 日志记录(一)
- Python学习日志之三-----Python小应用示例
- python 的日志logging模块学习
- python 的日志logging模块学习
- Python学习日志
- Python模块学习 ---- logging 日志记录(一) - 成长的点滴,记录与分享 - 博客频道 - CSDN.NET
- python 的日志logging模块学习
- Python模块学习 ---- logging 日志记录(一)
- python 学习日志(1)
- python 的日志logging模块学习
- python 的日志logging模块学习 (转自:http://www.cnblogs.com/dkblog/archive/2011/08/26/2155018.html)
- Python模块学习 ---- logging 日志记录(一)
- python日志学习