
leetcode做题记录0065
发布日期:2021-05-07 13:48:30
浏览次数:24
分类:精选文章
本文共 1161 字,大约阅读时间需要 3 分钟。
leetcode 0065
说明
只是为了记录一下,不求多快,也不深究。
会简要描述思路,代码中不写注释。
如碰到不会做的用了别人代码会在博客中标出。
题目描述
参考
参考自置顶题解,链接如下:
思路
想着把所有情况考虑一遍,最后写着写着心态崩了。
看答案用有限状态机,奇怪的知识增加了,答案真的秀。
有三个可接受状态,6是普通接收状态,3是带小数点的接收状态,5是带e的接收状态。
8是特例,代表356后面还可以加空格,也能接受。
其他都是中间状态。
不多说了好吧,作者太顶。
class Solution { public int make(char c) { switch (c) { case ' ': return 0; case '+': case '-': return 1; case '.': return 3; case 'e': return 4; default: if (c >= 48 && c <= 57) return 2; } return -1; } public boolean isNumber(String s) { int state = 0; int[][] transfer = { { 0, 1, 6, 2, -1 }, { -1, -1, 6, 2, -1 }, { -1, -1, 3, -1, -1 }, { 8, -1, 3, -1, 4 }, { -1, 7, 5, -1, -1 }, { 8, -1, 5, -1, -1 }, { 8, -1, 6, 3, 4 }, { -1, -1, 5, -1, -1 }, { 8, -1, -1, -1, -1 } }; char[] ss = s.toCharArray(); for (int i = 0; i < ss.length; ++i) { int id = make(ss[i]); if (id < 0) return false; state = transfer[state][id]; if (state < 0) return false; } if (state == 3 || state == 5 || state == 6 || state == 8) { return true; } else { return false; } }}
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年03月31日 17时44分38秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
mcrypt加密以及解密过程
2019-03-06
go等待N个线程完成操作总结
2019-03-06
ReactJs入门教程-精华版
2019-03-06
Python 之网络式编程
2019-03-06
MySql5.5安装步骤及MySql_Front视图配置
2019-03-06
Java内存模型(JMM)
2019-03-06
AQS相关
2019-03-06
WCF学习之旅—第三个示例之一(二十七)
2019-03-06
java ThreadPoolExecutor初探
2019-03-06
快速指数算法
2019-03-06
python去除字符串中的特殊字符(爬虫存储数据时会遇到不能作为文件名的字符串)
2019-03-06
SpringCloud微服务(03):Hystrix组件,实现服务熔断
2019-03-06
Spring 框架基础(01):核心组件总结,基础环境搭建
2019-03-06
Cassandra数据建模
2019-03-06
Internet Explorer 10 专题上线
2019-03-06
云计算之路-阿里云上:0:25~0:40网络存储故障造成网站不能正常访问
2019-03-06
网站故障公告1:使用阿里云RDS之后一个让人欲哭无泪的下午
2019-03-06
上周热点回顾(6.3-6.9)
2019-03-06