10. Regular Expression Matching 2019-03-13

正则表达式匹配

1.一开始自己使用的是一大堆if语句,企图用一个循环搞定,但是一直修修补补测试了好久都没有通过。然后去讨论区看了一下,发现了一个十分容易理解的解法,使用递归的方式。虽然时间复杂度不是最低,但是很容易理解。下面贴出代码


class Solution {

  public boolean isMatch(String s, String p) {

    if (p.length() == 0) {

        return s.length() == 0;

    }

    if (p.length() > 1 && p.charAt(1) == '*') {  // second char is '*'

        if (isMatch(s, p.substring(2))) {

            return true;

        }

        if(s.length() > 0 && (p.charAt(0) == '.' || s.charAt(0) == p.charAt(0))) {

            return isMatch(s.substring(1), p);

        }

        return false;

    } else {                                    // second char is not '*'

        if(s.length() > 0 && (p.charAt(0) == '.' || s.charAt(0) == p.charAt(0))) {

            return isMatch(s.substring(1), p.substring(1));

        }

          return false;


    }

  }

}


2.还有一种解决方式是采用dp,但是由于之前学的dp不扎实,还没有理解透,所以准被等这几天再深入了解下dp再使用dp解决这个问题。

你可能感兴趣的:(10. Regular Expression Matching 2019-03-13)