国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

模擬正則表達式匹配

2019-11-08 01:41:55
字體:
來源:轉載
供稿:網友

請實現一個函數用來匹配包括'.'和'*'的正則表達式。模式中的字符'.'表示任意一個字符,而'*'表示它前面的字符可以出現任意次(包含0次)。 在本題中,匹配是指字符串的所有字符匹配整個模式。例如,字符串"aaa"與模式"a.a"和"ab*ac*a"匹配,但是與"aa.a"和"ab*a"均不匹配

遞歸模擬,當pattern數組中下一個為'*',則遞歸枚舉是匹配到原串的哪個位置

public class Solution {    PRivate char[] str ;    private char[] pattern  ;    public boolean match(char[] str, char[] pattern)    {        this.str = str  ;        this.pattern = pattern ;        return match(0 , 0) ;    }    private boolean judge(int sPos , int pPos){        int i = pattern.length-1  ;        while(i >= pPos){            if(pattern[i] == '*' || (i+1 < pattern.length && pattern[i+1] == '*')){                i-- ;            }else{                return false ;            }        }        return true;    }    private boolean match(int sPos , int pPos){        if(sPos == str.length){            return judge(sPos , pPos) ;        }        while(sPos < str.length && pPos < pattern.length){            if(pattern[pPos] == '*'){                int ne = pPos+1 ;                while(ne < pattern.length && pattern[ne] == '*')                    ne++ ;                if(pattern[pPos-1] == '.'){                    for(int i = sPos;i <= str.length;i++){                        if(match(i,ne))return true ;                    }                    return false ;                }                if(match(sPos , ne))return true ;                for(int i = sPos;i < str.length && str[i] == pattern[pPos-1];i++){                    if(match(i+1 , ne)){                        return true ;                    }                }                return false ;            }else if(pPos+1 < pattern.length && pattern[pPos+1] == '*'){                pPos++ ;            }else if(pattern[pPos] == '.'){                sPos++;                pPos++ ;            }else if(str[sPos] == pattern[pPos]){                sPos++ ;                pPos++ ;            }else{                return false ;            }        }        if(pPos == pattern.length){            if(sPos < str.length)return false ;            else return true ;        }        return judge(sPos , pPos) ;    }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 哈巴河县| 大邑县| 白河县| 峨眉山市| 余姚市| 邵武市| 革吉县| 石渠县| 抚顺县| 连城县| 通海县| 边坝县| 临城县| 鹤庆县| 湘潭县| 左云县| 丹凤县| 句容市| 冕宁县| 东城区| 西峡县| 新闻| 武功县| 酒泉市| 鄂尔多斯市| 潜山县| 开封市| 曲阜市| 蓝田县| 新兴县| 筠连县| 神木县| 余江县| 台中县| 嵊州市| 安达市| 许昌市| 伊宁市| 汝城县| 龙海市| 许昌市|