Leetcode 65 Valid Number
Posted hwd9654
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 65 Valid Number相关的知识,希望对你有一定的参考价值。
分类讨论的项比较多
先观察给的例子,还有题目给的提示——valid答案中可以包含的字符
发现:
"+ - "要么在开头,要么紧跟着e,只有这两个位置
"e",前后必须有数字,且之前不能出现过e
". ",前面不能出现过e或". "
所以我们可以用几个flag
seenNum表示之前出现过数字
seenNumAfterE 表示e之后有数字
dot表示之前出现过". "
e表示之前出现过e
注意初始化的时候seenNumAfterE = true,因为s不一定包含e,等出现e再将它设为false。其它flag都设为false
最后返回 seenNum && seenNumAfterE
1 class Solution 2 public boolean isNumber(String s) 3 boolean seenNum = false, seenNumAfterE = true; 4 boolean dot = false, e = false; 5 s = s.trim(); //去掉首尾的空格 6 int count = 0; 7 for(char i : s.toCharArray()) 8 if(i >= ‘0‘ && i <= ‘9‘) 9 seenNum = true; 10 seenNumAfterE = true; 11 else if(i == ‘.‘) 12 if(e || dot) 13 return false; 14 dot = true; 15 else if(i == ‘e‘) 16 if(e || !seenNum) 17 return false; 18 seenNumAfterE = false; 19 e = true; 20 else if(i == ‘+‘ || i == ‘-‘) 21 if(count != 0 && s.charAt(count - 1) != ‘e‘) 22 return false; 23 else 24 return false; 25 26 count++; 27 28 29 return seenNum && seenNumAfterE; 30 31
以上是关于Leetcode 65 Valid Number的主要内容,如果未能解决你的问题,请参考以下文章