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的主要内容,如果未能解决你的问题,请参考以下文章

[LeetCode] 65. Valid Number Java

Leetcode 65 Valid Number

65. Valid Number

65. Valid Number *HARD*

65. Valid Number

65. Valid Number