当前位置: 首页 > news >正文

leetcode算法题--表示数值的字符串

原题链接:https://leetcode.cn/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof/description/?envType=study-plan-v2&envId=coding-interviews

题目类型有点新颖,有限状态机

// CharType表示当前字符的类型
// State表示当前所处的状态
type State int
type CharType intconst (CHAR_SPACE CharType = iotaCHAR_POINTCHAR_NUMBERCHAR_ECHAR CHAR_SINGAL CHAR_INVALID
)func getType(ch byte) CharType {switch(ch){case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':return CHAR_NUMBERcase '.':return CHAR_POINTcase '+', '-':return CHAR_SINGAL
//        case ' ':
//            return CHAR_SPACEcase 'e', 'E':return CHAR_ECHAR} return CHAR_INVALID
}const (STATE_INIT State = iotaSTATE_INIT_POINTSTATE_INIT_SINGALSTATE_NUMBERSTATE_NUMBER_POINTSTATE_POINT_NUMBERSTATE_ECHARSTATE_ECHAR_NUMBERSTATE_ECHAR_SINGAL
)func isNumber(s string) bool {tranfer := map[State]map[CharType]State{STATE_INIT: {CHAR_SINGAL: STATE_INIT_SINGAL,CHAR_POINT: STATE_INIT_POINT,CHAR_NUMBER: STATE_NUMBER,}, STATE_INIT_POINT: {CHAR_NUMBER: STATE_POINT_NUMBER,},STATE_NUMBER: {CHAR_NUMBER: STATE_NUMBER,CHAR_POINT: STATE_NUMBER_POINT,CHAR_ECHAR: STATE_ECHAR,},STATE_INIT_SINGAL: {CHAR_POINT: STATE_INIT_POINT, CHAR_NUMBER: STATE_NUMBER, },STATE_ECHAR: {CHAR_SINGAL: STATE_ECHAR_SINGAL,CHAR_NUMBER: STATE_ECHAR_NUMBER,},STATE_NUMBER_POINT: {CHAR_NUMBER: STATE_POINT_NUMBER,CHAR_ECHAR: STATE_ECHAR, },STATE_POINT_NUMBER: {CHAR_NUMBER: STATE_POINT_NUMBER, CHAR_ECHAR: STATE_ECHAR, },STATE_ECHAR_NUMBER: {CHAR_NUMBER: STATE_ECHAR_NUMBER,}, STATE_ECHAR_SINGAL: {CHAR_NUMBER: STATE_ECHAR_NUMBER,},}state := STATE_INITss := strings.TrimSpace(s)for i := range ss {ch := ss[i]ty := getType(ch)if ty == CHAR_INVALID {return false}if st, ok := tranfer[state][ty]; ok {state = st} else {return false}}switch state {case STATE_NUMBER, STATE_POINT_NUMBER, STATE_NUMBER_POINT, STATE_ECHAR_NUMBER:return true}return false
}
http://www.lryc.cn/news/140783.html

相关文章:

  • Docker安装及Docker构建简易版Hadoop生态
  • 使用Burp Suite进行Web应用渗透测试
  • Github的使用指南
  • mongodb 添加加点 stateStr 停在 STARTUP
  • c语言中编译过程与预处理
  • TP-LINK 路由器设置内网穿透
  • A 题国际旅游网络的大数据分析-详细解析与代码答案(2023 年全国高校数据统计与调查分析挑战赛
  • 《深入理解Java虚拟机》读书笔记: 类加载器
  • 宝塔计划任务读取文件失败
  • Python操作sql,备份数据库
  • Linux线程 --- 生产者消费者模型(C语言)
  • Vue2向Vue3过度核心技术computed计算属性
  • 芯片行业震荡期,数字后端还可以入吗?
  • “精准时空”赋能制造业智能化发展
  • Kotlin协程flow发送时间间隔debounce
  • ServiceManager接收APP的跨进程Binder通信流程分析
  • Git问题:解决“ssh:connect to host github.com port 22: Connection timed out”
  • 在Eclipse中创建javaweb工程
  • Pycharm链接远程mysql报错
  • 【硕士论文完美复现】【价格型需求响应】基于需求侧响应的配电网供电能力综合评估(Matlab代码实现)
  • Android Okhttp 源码浅析三
  • 一分钟学会用pygame制作棋盘背景
  • Java --- 包装类
  • [运维] wvp 28181安装部署全流程(ubuntu2204)
  • vue实现富文本
  • uniapp 开发微信小程序使用echart的dataZoom属性缩放功能不生效!bug记录!
  • 用户端Web自动化测试_L4
  • CAPL - Panel和TestModule结合实现测试项可选
  • 机器学习,过拟合与欠拟合,正则化与交叉验证
  • gradio使用transformer模块demo介绍1:Text Natural Language Processing