写一个自动机识别输入字符串的代码
时间: 2024-02-06 17:09:35 浏览: 79
自动匹配输入字符串
好的,我来给你写一个简单的自动机识别输入字符串的代码。假设我们要识别的字符串只包含小写字母 a 和 b。
```
#include <iostream>
using namespace std;
bool isValid(string str) {
int state = 0; // 初始状态为 0
for (char c : str) {
if (c == 'a') {
if (state == 0) state = 1;
else if (state == 1) state = 0;
else return false; // 非法输入
} else if (c == 'b') {
if (state == 1) state = 2;
else if (state == 2) state = 1;
else return false; // 非法输入
} else {
return false; // 非法输入
}
}
return state == 1; // 只有在状态为 1 的情况下才是合法字符串
}
int main() {
string str;
cout << "请输入字符串:";
cin >> str;
if (isValid(str)) {
cout << "合法字符串" << endl;
} else {
cout << "非法字符串" << endl;
}
return 0;
}
```
这段代码中,我们使用了一个整数变量 `state` 来记录当前自动机的状态。初始状态为 0,如果读入了一个字符 a,就从状态 0 转移到状态 1;如果读入了一个字符 b,就从状态 1 转移到状态 2,或者从状态 2 转移到状态 1。如果读入的字符不是 a 或 b,或者在当前状态下无法接受该字符,则认为输入字符串非法。
最后,只有在状态为 1 的情况下才认为输入字符串合法。
阅读全文