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;
    
    
    
        }
    };
    /*
    状态转移?
    
    
    */

    拓展学习

  • 相关阅读:
    指定的架构无效。错误: CLR 类型到 EDM 类型的映射不明确
    win7IIS错误修改路径最全的
    如何设置textarea光标默认为第一行第一个字符
    我的Hexo网站
    Leetcode Round 4 记录
    几何编程题
    Leetcode Round 3 记录
    几何概型
    Roman Number & Integer
    Single Number
  • 原文地址:https://www.cnblogs.com/BoysCryToo/p/13453390.html
Copyright © 2011-2022 走看看