〖JAVE经验〗Google的面试题正则表达式解析器

一、题目如下:

————————–

Write a parser for a simplified regular expression

On an alphabet set [a-z], a simplified regular expression is much simpler than the normal regular expression.

It has only two meta. characters: '.' and '*'.

'.' — exact one arbitrary character match.

'*' — zero or more arbitrary character match.

————————–

举个例子,表达式ab.*d 能匹配'abcd', 'abccd', 'abad'. 不能匹配'abc', ' '(空字符串),'abd'.

二、解法:

解析给定的表达式

生成对应的NFA(Nondeterministic Finite Automation)

NFA转化为DFA(Deterministic Finite Automation)

利用DFA判断输入字符串

三、相关代码:

FiniteAutomata.java 和State.java,随手写写,请选择性参考。

FiniteAutomata.java

package parser;

import java.util.HashMap;

import java.util.HashSet;

import java.util.IteraTor;

import java.util.LinkedList;

import java.util.Map;

import java.util.Map.Entry;

import java.util.Queue;

import java.util.Set;

public class FiniteAutomata {

private State start;

private final static char[] inputs;

static {

inputs = new char[26];

for (char i = 0; i < 26; i++){

inputs[i] = (char)('a' + i);

}

}

更多免费相关学习经验请访问:Tore_m_1206686_21115_1_1.html”>http://www.shangxueba.com/sTore_m_1206686_21115_1_1.html

没有人陪你走一辈子,所以你要适应孤独,

〖JAVE经验〗Google的面试题正则表达式解析器

相关文章:

你感兴趣的文章:

标签云: