Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- bool is_word(const std::string &s)
- {
- if (s.empty()) {
- return false;
- }
- enum state
- {
- H, A, B, C, D, E, F, G, I, S, Err
- };
- state curr_st = H;
- size_t i = 0;
- char c = s[i];
- while (curr_st != S && curr_st != Err && i <= s.size()) {
- if (i == s.size()) {
- c = 'S';
- }
- switch (curr_st) {
- case H: {
- if (c == '0') {
- c = s[++i];
- curr_st = A;
- } else if (c == '1') {
- c = s[++i];
- curr_st = B;
- } else {
- curr_st = Err;
- }
- break;
- }
- case A:
- if (c == '0') {
- c = s[++i];
- curr_st = A;
- } else if (c == '1') {
- c = s[++i];
- curr_st = B;
- } else {
- curr_st = Err;
- }
- break;
- case B:
- if (c == '0') {
- c = s[++i];
- curr_st = C;
- } else if (c == '1') {
- c = s[++i];
- curr_st = D;
- } else {
- curr_st = Err;
- }
- break;
- case C:
- if (c == '0') {
- c = s[++i];
- curr_st = E;
- } else if (c == '1') {
- c = s[++i];
- curr_st = F;
- } else {
- curr_st = Err;
- }
- break;
- case D:
- if (c == '0') {
- c = s[++i];
- curr_st = G;
- } else if (c == '1') {
- c = s[++i];
- curr_st = I;
- } else {
- curr_st = Err;
- }
- break;
- case E:
- if (c == '0') {
- c = s[++i];
- curr_st = A;
- } else if (c == '1') {
- c = s[++i];
- curr_st = B;
- } else if (c == 'S') {
- curr_st = S;
- } else {
- curr_st = Err;
- }
- break;
- case F:
- if (c == '0') {
- c = s[++i];
- curr_st = C;
- } else if (c == '1') {
- c = s[++i];
- curr_st = D;
- } else if (c == 'S') {
- curr_st = S;
- } else {
- curr_st = Err;
- }
- break;
- case G:
- if (c == '0') {
- c = s[++i];
- curr_st = E;
- } else if (c == '1') {
- c = s[++i];
- curr_st = F;
- } else if (c == 'S') {
- curr_st = S;
- } else {
- curr_st = Err;
- }
- break;
- case I:
- if (c == '0') {
- c = s[++i];
- curr_st = G;
- } else if (c == '1') {
- c = s[++i];
- curr_st = I;
- } else if (c == 'S') {
- curr_st = S;
- } else {
- curr_st = Err;
- }
- break;
- default:
- break;
- }
- }
- return curr_st != Err;
- }
- int main()
- {
- std::string s;
- while (std::cin >> s) {
- std::cout << is_word(s) << std::endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment