【leetcode刷题笔记】Valid Number
Validate if a given string is numeric.
Some examples:"0"
=> true
" 0.1 "
=> true
"abc"
=> false
"1 a"
=> false
"2e10"
=> true
题解:题目不难,就是有点麻烦,要注意的地方很多,总结一下:
- 前面和后面的空格要用s.trim()去掉;
- 前导的'+'和'-'号需要忽略;
- 小数点只能出现一次,且不能出现在e后面;
- 指数符号e只能出现一次,而且它的前面和后面都要有数字;
- 除了前导的'+'和'-'外,还可以在符号e后面出现'+'和'-',但只能在e后面。
代码如下:
1 public class Solution { 2 public boolean isNumber(String s) { 3 if(s == null || s.length() == 0) 4 return false; 5 6 s = s.trim(); 7 if(s.length() == 0) 8 return false; 9 10 int i = 0; 11 if(s.charAt(0) == '+' || s.charAt(0) == '-') 12 i++; 13 14 boolean hasDot = false; 15 boolean hasExp = false; 16 boolean num = false; 17 18 while(i<s.length()){ 19 char now = s.charAt(i); 20 if(now >= '0' && now <= '9') 21 { 22 num = true; 23 } 24 else if(now == '.'){ 25 if(hasDot || hasExp) 26 return false; 27 hasDot = true; 28 } 29 else if(now == 'e'){ 30 if(hasExp || num == false) 31 return false; 32 hasExp = true; 33 num = false; 34 } 35 else if(now == '+' || now == '-'){ 36 if(s.charAt(i-1) != 'e') 37 return false; 38 } 39 else 40 return false; 41 i++; 42 } 43 return num; 44 } 45 }
分类:
leetcode刷题总结
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了