Package edu.princeton.cs.algs4
Class NFA
- Object
 - 
- edu.princeton.cs.algs4.NFA
 
 
- 
public class NFA extends Object
TheNFAclass provides a data type for creating a nondeterministic finite state automaton (NFA) from a regular expression and testing whether a given string is matched by that regular expression. It supports the following operations: concatenation, closure, binary or, and parentheses. It does not support mutiway or, character classes, metacharacters (either in the text or pattern), capturing capabilities, greedy or reluctant modifiers, and other features in industrial-strength implementations such asPatternandMatcher.This implementation builds the NFA using a digraph and a stack and simulates the NFA using digraph search (see the textbook for details). The constructor takes time proportional to m, where m is the number of characters in the regular expression. The recognizes method takes time proportional to m n, where n is the number of characters in the text.
For additional documentation, see Section 5.4 of Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne.
- Author:
 - Robert Sedgewick, Kevin Wayne
 
 
- 
- 
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static voidmain(String[] args)Unit tests theNFAdata type.booleanrecognizes(String txt)Returns true if the text is matched by the regular expression. 
 - 
 
- 
- 
Constructor Detail
- 
NFA
public NFA(String regexp)
Initializes the NFA from the specified regular expression.- Parameters:
 regexp- the regular expression
 
 - 
 
- 
Method Detail
- 
recognizes
public boolean recognizes(String txt)
Returns true if the text is matched by the regular expression.- Parameters:
 txt- the text- Returns:
 trueif the text is matched by the regular expression,falseotherwise
 
- 
main
public static void main(String[] args)
Unit tests theNFAdata type.- Parameters:
 args- the command-line arguments
 
 - 
 
 -