java 实现一个有限状态自动机,识别偶数个1
时间: 2024-03-23 15:43:07 浏览: 24
以下是 Java 实现有限状态自动机识别偶数个1的代码:
```
public class FSM {
private enum State {
EVEN_ZEROS, ONE, ODD_ONES, ZERO
}
public static boolean recognize(String input) {
State currentState = State.EVEN_ZEROS;
for (char c : input.toCharArray()) {
switch (currentState) {
case EVEN_ZEROS:
if (c == '0') {
currentState = State.EVEN_ZEROS;
} else if (c == '1') {
currentState = State.ONE;
}
break;
case ONE:
if (c == '0') {
currentState = State.ODD_ONES;
} else if (c == '1') {
currentState = State.ZERO;
}
break;
case ODD_ONES:
if (c == '0') {
currentState = State.ODD_ONES;
} else if (c == '1') {
currentState = State.ONE;
}
break;
case ZERO:
if (c == '0') {
currentState = State.ZERO;
} else if (c == '1') {
currentState = State.ODD_ONES;
}
break;
}
}
return currentState == State.EVEN_ZEROS;
}
}
```
在这个有限状态自动机中,我们定义了四个状态:EVEN_ZEROS(偶数个0)、ONE(奇数个1)、ODD_ONES(奇数个1)、ZERO(0)。
根据输入字符,我们使用 switch 语句更新当前状态。如果输入字符为 0,则停留在当前状态;如果输入字符为 1,则根据当前状态更新到下一个状态。
最后,我们检查状态是否为 EVEN_ZEROS。如果是,则输入字符串包含偶数个 1,返回 true;否则,返回 false。