博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LintCode] 通配符查询
阅读量:6693 次
发布时间:2019-06-25

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

动态规划:

1 class Solution { 2 public: 3     /** 4      * @param s: A string  5      * @param p: A string includes "?" and "*" 6      * @return: A boolean 7      */ 8     bool isMatch(const char *s, const char *p) { 9         // write your code here10         int m = strlen(s), n = strlen(p);11         vector
cur(m + 1, false);12 cur[0] = true;13 for (int j = 1; j <= n; j++) {14 bool pre = cur[0];15 cur[0] = cur[0] && p[j - 1] == '*';16 for (int i = 1; i <= m; i++) {17 bool temp = cur[i];18 if (p[j - 1] != '*')19 cur[i] = pre && (s[i - 1] == p[j - 1] || p[j - 1] == '?');20 else cur[i] = cur[i - 1] || cur[i];21 pre = temp;22 }23 }24 return cur[m];25 }26 };

贪心:

1 class Solution { 2 public: 3     /** 4      * @param s: A string  5      * @param p: A string includes "?" and "*" 6      * @return: A boolean 7      */ 8     bool isMatch(const char *s, const char *p) { 9         // write your code here10         const char* asterisk = NULL;11         const char* match = NULL;12         while (*s) {13             if (*p == '*') {14                 asterisk = p++;15                 match = s;16             }17             else if (*s == *p || *p == '?') {18                 s++;19                 p++;20             }21             else if (asterisk) {22                 s = ++match;23                 p = asterisk + 1;24             }25             else return false;26         }27         while (*p == '*') p++;28         return !*p;29     }30 };

 

转载于:https://www.cnblogs.com/jcliBlogger/p/4624041.html

你可能感兴趣的文章
C#基础 条件语句、选择语句和循环语句
查看>>
15款经典图表软件推荐
查看>>
bugzilla安装笔记
查看>>
记录linux设置定时执行python脚本以及输出到指定文件
查看>>
我的友情链接
查看>>
Hadoop 2.0(YARN/HDFS)学习资料汇总
查看>>
15.汉字的繁简转换 C#
查看>>
Confluence 6 如何考虑设置一个空间的主页
查看>>
hadoop命令执行hbase应用jar包时的环境变量加载问题
查看>>
AndroidTV 网络机顶盒 Wi-Fi设置
查看>>
[精讲-5]BitLocker
查看>>
awk常用注意事项--awk如何引用外部变量
查看>>
mysql5.7制作rpm包spec文件
查看>>
mysq基础笔记(sql语句)
查看>>
XenMobile学习文章总结
查看>>
Android开发者的混淆使用手册
查看>>
Telnet服务及协议
查看>>
SpringMVC深度探险
查看>>
关于vs2010巨慢(cpu占用高)的几种解决方式
查看>>
简单3步,轻松集成Testlink和MantisBT
查看>>