知识点

LeetCode算法题

  1. LeetCode算法题

    1. 10.【正则表达式匹配】

      解题思路:

      这是一道经典的算法设计题。面对这种复杂的题目,都是由浅入深、逐步细化的过程。

      首先,我们暂时不管正则符号,如果是两个普通的字符串进行比较,如何进行匹配?就是逐字符比较。并且,我们可以用递归的方式来实现。如下所示:

       public static boolean isMatch(char[] text, char[] pattern, int i, int j) {
           if (j >= pattern.length()) {
               // 如果pattern匹配完毕,但是text没有匹配完毕,直接返回false 即可
               if (i < text.length()) {
                   return false;
               } else {
                   return true;
               }
           }
      
           // 进行匹配
           boolean first_match = false;
           if (i < text.length()) {
               first_match = (text[i] == pattern[j]);
           }
      
           return first_match && isMatch(text, pattern, i + 1, j + 1);
       }

      接下来,处理正则中的通配符.,因为通配符.可以匹配任意字符,因此只要修改一下匹配逻辑即可。

      最后,要处理*