zoukankan      html  css  js  c++  java
  • Valid Number

    Validate if a given string is numeric.
    Some examples:
    "0" => true
    " 0.1 " => true
    "abc" => false
    "1 a" => false
    "2e10" => true
    Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.

    思路:

    这题我做的极其麻烦。但http://www.jiuzhang.com/solutions/valid-number/ 和http://www.cnblogs.com/yuzhangcmu/p/4060348.html的答案妙极啊。

    我抄在这里~背诵一遍。他们的思路是:

    首先我们看,能够出现的符号有:'e', 'E', '.' , '+', '-', '0 ~ 9'。 所以如果出现了别的东西,直接return false

    再者,这些符号出现的顺序是有讲究的。

    对于‘e’ 和 ‘E’:e的前后都要有数字,不会一e为开头或结尾;不可能出现两个e。

    对于‘.' :不可能在e后面出现,不会有两个‘.’。

    对于‘+/-’:只能出现在最开头或者紧跟‘e’。

    所以我们从头到尾读取,用三个flag表示这些符号的出现状态,思路就很清楚了!看代码吧

     1 public boolean isNumber(String s) {
     2         // Write your code here
     3         if (s == null) {
     4             return false;
     5         }
     6         String newS = s.trim();
     7         boolean num = false;
     8         boolean exp = false;
     9         boolean dot = false;
    10         for (int i = 0; i < newS.length(); i++) {
    11             if (newS.charAt(i) == 'e' || newS.charAt(i) == 'E') {
    12                 if (!num || exp) {
    13                     return false;
    14                 }else{
    15                     exp = true;
    16                     num = false;
    17                 }
    18             }else if(newS.charAt(i) == '.') {
    19                 if (exp || dot) {
    20                     return false;
    21                 }else{
    22                     dot = true;
    23                 }
    24             }else if(newS.charAt(i) == '+' || newS.charAt(i) == '-') {
    25                 if (i != 0 && newS.charAt(i - 1) != 'e' && newS.charAt(i - 1) != 'E') {
    26                     return false;
    27                 }
    28             }else if(newS.charAt(i) >= '0' && newS.charAt(i) <= '9') {
    29                 num = true;
    30             }else{
    31                 return false;
    32             }
    33         }
    34         return num;
    35     }
  • 相关阅读:
    metal的gpu query
    体积雾 global fog unity 及改进
    hdr rt format对颜色的影响
    unity deferred lighting
    unity linear space时 photoshop blend的正确设置
    unity linear work flow
    一些数据 bandwidth之类
    deferred rendering with msaa
    unity 显示mipmaplevel
    【转】在C#中使用SendMessage
  • 原文地址:https://www.cnblogs.com/gonuts/p/4543090.html
Copyright © 2011-2022 走看看