zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    Smith Numbers POJ
    HDU
    dp HDU
    POJ
    HDU
    LOOPS HDU
    水题,P1789 【Mc生存】插火把 (暴力即可)
    LOOPS
    Coprime (单色三角形+莫比乌斯反演(数论容斥))
    莫比乌斯函数 51nod-1240(合数分解试除法)
  • 原文地址:https://www.cnblogs.com/hwd9654/p/10987558.html
Copyright © 2011-2022 走看看