LeetCode OJ--Regular Expression Matching
http://oj.leetcode.com/problems/regular-expression-matching/
问题给想复杂了,只有p中可以含有. *,s中的字符都是确定的。想了好久,最终还是参考了网上的答案。等我再想想。
#include <iostream>
#include <map>
#include <string>
using namespace std; class Solution {
public:
bool isMatch(const char *s, const char *p)
{
if (s == NULL || p == NULL) return false;
if (*p == '\0') return *s == '\0'; if (*(p + ) == '*')
{
while ((*s != '\0' && *p == '.') || *s == *p)
{
if (isMatch(s, p + )) return true; //aab a*cd
++s;
} return isMatch(s, p + ); //aab c*ab 的情况
}
else if ((*s != '\0' && *p == '.') || *s == *p)
{
return isMatch(s + , p + );
} return false;
}
}; int main()
{
Solution myS;
char *s = "aab";
char *p = "a*cd";
myS.isMatch(s,p);
return ;
}
于是,又试图用自己的解法,来做这道题。
class Solution {
public:
bool isMatch(const char *s, const char *p)
{
if (s == NULL || p == NULL) return false;
int j = ,i = ;
char flagchar = '\0';
while(s[i]!='\0'&&p[j]!='\0')
{
if(s[i] == p[j] )
{
flagchar = s[i];
i++;
j++;
}
else if(p[j] == '.')
{
i++;
j++;
flagchar = '\0';
}
else if(s[i]!= p[j] && p[j]!= '*' && p[j] != '\0' && p[j+]!='\0' && p[j+] == '*')
{
flagchar = p[j];
j+= ;
}
else if(p[j]=='*')
{
if(flagchar == '\0')
flagchar = s[i];
while(p[j+]!='\0'&&p[j+]==flagchar)
j++;
j++;
while(s[i]!='\0'&&s[i]==flagchar)
i++;
}
else
break;
}
if(s[i]=='\0'&&p[j]=='\0')
return true;
return false;
}
};
但是在"aaa", "ab*a*c*a"里,挂掉了。发现,当该边的只是规模的时候,确实递归非常好用。在这个地方,确实得递归。
在多种情况匹配不确定的时候,这个尝试
while ((*s != '\0' && *p == '.') || *s == *p)
{
if (isMatch(s, p + 2)) return true; //aab a*cd
++s;
}
return isMatch(s, p + 2); //aab c*ab 的情况
这里,大赞啊!
又长智商了。
LeetCode OJ--Regular Expression Matching的更多相关文章
- leetcode 10 Regular Expression Matching(简单正则表达式匹配)
最近代码写的少了,而leetcode一直想做一个python,c/c++解题报告的专题,c/c++一直是我非常喜欢的,c语言编程练习的重要性体现在linux内核编程以及一些大公司算法上机的要求,pyt ...
- [LeetCode][Python]Regular Expression Matching
# -*- coding: utf8 -*-'''https://oj.leetcode.com/problems/regular-expression-matching/ Implement reg ...
- LeetCode (10): Regular Expression Matching [HARD]
https://leetcode.com/problems/regular-expression-matching/ [描述] Implement regular expression matchin ...
- [LeetCode] 10. Regular Expression Matching 正则表达式匹配
Given an input string (s) and a pattern (p), implement regular expression matching with support for ...
- Leetcode 10. Regular Expression Matching(递归,dp)
10. Regular Expression Matching Hard Given an input string (s) and a pattern (p), implement regular ...
- [LeetCode] 10. Regular Expression Matching
Implement regular expression matching with support for '.' and '*'. DP: public class Solution { publ ...
- 【leetcode】Regular Expression Matching
Regular Expression Matching Implement regular expression matching with support for '.' and '*'. '.' ...
- 【leetcode】Regular Expression Matching (hard) ★
Implement regular expression matching with support for '.' and '*'. '.' Matches any single character ...
- 【JAVA、C++】LeetCode 010 Regular Expression Matching
Implement regular expression matching with support for '.' and '*'. '.' Matches any single character ...
- Java [leetcode 10] Regular Expression Matching
问题描述: Implement regular expression matching with support for '.' and '*'. '.' Matches any single cha ...
随机推荐
- Docker 容器的网络连接 & 容器互联
1. Docker 容器网络基础架构 Docker0 ifconfig查看到的 docker0 是linux的虚拟网桥(OSI数据链路层) docker0 地址划分: 172.17.42.1 255. ...
- Ubuntu下kaldi安装
该文章为博主原创,如若转载请注明出处:https://www.cnblogs.com/fengleixue/p/9482202.html 因公司业务需要需使用kaldi语音识别工具,现将kaldi环境 ...
- 批量ping IP并检测IP延迟率和丢包率脚本
脚本文件如下: #!/bin/bash #Author:Mr.Ding #Created Time:2018-08-26 07:23:44 #Name:ping.sh #Description: sh ...
- Beyond Compare4.x 破解方案
如果过了30天的评估期或报“Beyond Compare 许可证密钥被撤销” 而导致不能再打开Beyond Compare,可以用下面的方法来解决: 1.找到“C:\Users\[Your User ...
- iPhone如何设置自定义铃声?无需连接电脑,轻松几步就搞定!
转载自: https://baijiahao.baidu.com/s?id=1594988016778457969&wfr=spider&for=pc 受够了iPhone自带的千篇一律 ...
- 二叉排序树:POJ2418-Hardwood Species(外加字符串处理)
Hardwood Species Time Limit: 10000MS Memory Limit: 65536K Description Hardwoods are the botanical gr ...
- Linux学习-工作管理 (job control)
什么是工作管理? 进行工作管理的行为中, 其实每个工作都是目前 bash 的 子进程,亦即彼此之间是有相关性的. 我们无法以 job control 的方式由 tty1 的环境去管理 tty2 的 b ...
- 有感于Java Final Exam
秋季学期的java已经结课了,当看到教务平台贴出的通知说考试形式为单选题时,心中喜忧参半. 可喜的是这种考试形式还是比较得民心,毕竟除了判断题,最好做的也就是单选题了. 然而期中考试选择题50%的命中 ...
- spoj104 HIGH - Highways 矩阵树定理
欲学矩阵树定理必先自宫学习一些行列式的姿势 然后做一道例题 #include <iostream> #include <cstring> #include <cstdio ...
- C语言的文件处理
所谓“文件”一般指存储在外部介质上数据的集合.根据数据的组织形式,可分为ASCII文件和二进制文件.ASCII文件,又称为文本文件,它的每一个字节存放一个ASCII代码,代表一个字符.二进制文件是把内 ...