首页 > 其他 > 详细

Leetcode 65 Valid Number

时间:2019-06-07 11:17:01      阅读:61      评论:0      收藏:0      [点我收藏+]

分类讨论的项比较多

先观察给的例子,还有题目给的提示——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

原文:https://www.cnblogs.com/hwd9654/p/10987558.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!