赞
踩
题目:
题解:
- type State int
- type CharType int
-
- const (
- STATE_INITIAL State = iota
- STATE_INT_SIGN
- STATE_INTEGER
- STATE_POINT
- STATE_POINT_WITHOUT_INT
- STATE_FRACTION
- STATE_EXP
- STATE_EXP_SIGN
- STATE_EXP_NUMBER
- STATE_END
- )
-
- const (
- CHAR_NUMBER CharType = iota
- CHAR_EXP
- CHAR_POINT
- CHAR_SIGN
- CHAR_ILLEGAL
- )
-
- func toCharType(ch byte) CharType {
- switch ch {
- case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
- return CHAR_NUMBER
- case 'e', 'E':
- return CHAR_EXP
- case '.':
- return CHAR_POINT
- case '+', '-':
- return CHAR_SIGN
- default:
- return CHAR_ILLEGAL
- }
- }
-
- func isNumber(s string) bool {
- transfer := map[State]map[CharType]State{
- STATE_INITIAL: map[CharType]State{
- CHAR_NUMBER: STATE_INTEGER,
- CHAR_POINT: STATE_POINT_WITHOUT_INT,
- CHAR_SIGN: STATE_INT_SIGN,
- },
- STATE_INT_SIGN: map[CharType]State{
- CHAR_NUMBER: STATE_INTEGER,
- CHAR_POINT: STATE_POINT_WITHOUT_INT,
- },
- STATE_INTEGER: map[CharType]State{
- CHAR_NUMBER: STATE_INTEGER,
- CHAR_EXP: STATE_EXP,
- CHAR_POINT: STATE_POINT,
- },
- STATE_POINT: map[CharType]State{
- CHAR_NUMBER: STATE_FRACTION,
- CHAR_EXP: STATE_EXP,
- },
- STATE_POINT_WITHOUT_INT: map[CharType]State{
- CHAR_NUMBER: STATE_FRACTION,
- },
- STATE_FRACTION: map[CharType]State{
- CHAR_NUMBER: STATE_FRACTION,
- CHAR_EXP: STATE_EXP,
- },
- STATE_EXP: map[CharType]State{
- CHAR_NUMBER: STATE_EXP_NUMBER,
- CHAR_SIGN: STATE_EXP_SIGN,
- },
- STATE_EXP_SIGN: map[CharType]State{
- CHAR_NUMBER: STATE_EXP_NUMBER,
- },
- STATE_EXP_NUMBER: map[CharType]State{
- CHAR_NUMBER: STATE_EXP_NUMBER,
- },
- }
- state := STATE_INITIAL
- for i := 0; i < len(s); i++ {
- typ := toCharType(s[i])
- if _, ok := transfer[state][typ]; !ok {
- return false
- } else {
- state = transfer[state][typ]
- }
- }
- return state == STATE_INTEGER || state == STATE_POINT || state == STATE_FRACTION || state == STATE_EXP_NUMBER || state == STATE_END
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。