zoukankan      html  css  js  c++  java
  • 剑指 Offer 20. 表示数值的字符串

    题目

    剑指 Offer 20. 表示数值的字符串

    我的思路

    有限状态自动机

    我的实现

    class Solution {
    public:
        int getInput(char c)
        {
            if(c==' ')return 0;
            else if(c-'0'>=0&&c-'0'<=9)return 1;
            else if(c=='+'||c=='-')return 2;
            else if(c=='e')return 3;
            else if(c=='.')return 4;
            else return 5;
        }
        bool isNumber(string s) {
        int state = 0;
        int input;
        int pos = 0;
        int length = s.size();
        while(pos<length)
        {
            input = getInput(s[pos]);
            switch (state)
            {
                case 0:
                    if(input==0){state=0;}
                    else if(input==1){state = 2;}
                    else if(input==2){state = 1;}
                    else if(input==4){state = 9;}
                    else{return false;}
                break;
                case 1:
                    if(input==1){state=2;}
                    else if(input==4){state=9;}
                    else{return false;}
                break;
                case 2:
                    if(input==1){state=2;}
                    else if(input==3){state=5;}
                    else if(input==4){state=3;}
                    else if(input==0){state=8;}
                    else{return false;}
                break;
                case 3:
                    if(input==1){state=4;}
                    else if(input==0){state=8;}
                    else if(input==3){state=5;}
                    else{return false;}
                break;
                case 4:
                    if(input==0){state=8;}
                    else if(input==3){state=5;}
                    else if(input==1){state=4;}
                    else{return false;}
                break;
                case 5:
                    if(input==2){state=6;}
                    else if(input==1){state=7;}
                    else {return false;}
                break;
                case 6:
                    if(input==1){state=7;}
                    else{return false;}
                break;
                case 7:
                    if(input==1){state=7;}
                    else if(input==0){state=8;}
                    else {return false;}
                break;
                case 8:
                    if(input==0){state=8;}
                    else {return false;}
                break;
                case 9:
                    if(input==1){state=4;}
                    else{return false;}
                default:
                break;
            }
            ++pos;
        }
        if(state==2||state==3||state==4||state==7||state==8)
        return true;
        else return false;
    
    
    
        }
    };
    /*
    状态转移?
    
    
    */

    拓展学习

  • 相关阅读:
    CodeForces Gym 100935G Board Game DFS
    CodeForces 493D Vasya and Chess 简单博弈
    CodeForces Gym 100935D Enormous Carpet 快速幂取模
    CodeForces Gym 100935E Pairs
    CodeForces Gym 100935C OCR (水
    CodeForces Gym 100935B Weird Cryptography
    HDU-敌兵布阵
    HDU-Minimum Inversion Number(最小逆序数)
    七月馒头
    非常可乐
  • 原文地址:https://www.cnblogs.com/BoysCryToo/p/13453390.html
Copyright © 2011-2022 走看看