前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >leetcode Regular Expression Matching [rust]

leetcode Regular Expression Matching [rust]

作者头像
用户2436820
修改2023-09-20 19:04:04
7220
修改2023-09-20 19:04:04
举报

leetcode 正则匹配 今日递归解决,明日动态规划

代码语言:javascript
复制
struct Solution;

// 此时这个函数做的事情
// 第二个字符串不是* 此时是否相等 . 或者字符串相等
// 第二个字符是*号,匹配的话相等去掉匹配规则是否相等。

impl Solution {
    pub fn is_match_recursion(s: String, p: String) -> bool {
        if p.len() == 0 {
            return s.len() == 0;
        };
        let s_arr: Vec<char> = s.chars().collect();
        let p_arr: Vec<char> = p.chars().collect();
        let mut curMatch;

        if s_arr.len() == 0 {
            curMatch = false;
        } else {
            curMatch = s_arr[0] == p_arr[0] || p_arr[0] == '.';
        }

        if p_arr.len() > 1 && p_arr[1] == '*' {
            if curMatch {
                return Solution::is_match_recursion(s[1..].to_string(), p[..].to_string());
            } else {
                return Solution::is_match_recursion(s[..].to_string(), p[2..].to_string());
            }
        } else {
            if curMatch {
                return Solution::is_match_recursion(s[1..].to_string(), p[1..].to_string());
            } else {
                return false;
            }
        }
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn test_find_match() {
        assert_eq!(
            true,
            Solution::is_match_recursion(String::from("aa"), String::from("a*"))
        );
        assert_eq!(
            false,
            Solution::is_match_recursion(String::from("aa"), String::from("a"))
        );
        assert_eq!(
            true,
            Solution::is_match_recursion(String::from("ab"), String::from(".*"))
        );
        assert_eq!(
            true,
            Solution::is_match_recursion(String::from("aab"), String::from("c*a*b"))
        );
        assert_eq!(
            false,
            Solution::is_match_recursion(String::from("mississippi"), String::from("mis*is*p*."))
        );
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档