码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode 65 Valid Number

时间:2019-06-07 10:58:38      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:flag   ||   turn   初始   返回   numa   public   lse   class   

分类讨论的项比较多

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

标签:flag   ||   turn   初始   返回   numa   public   lse   class   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!